face down top of deck card goes away when deck is empty

main
Elijah Voigt 1 year ago
parent 5efbbd1ac9
commit fc6a9053b3

@ -1,6 +1,11 @@
use bevy::{prelude::*, utils::RandomState}; use bevy::{prelude::*, utils::RandomState};
use crate::{deck::Card, menu::UiMessage, setup::AnimationStore, view::ViewState}; use crate::{
deck::Card,
menu::UiMessage,
setup::{AnimationStore, TopCard},
view::ViewState,
};
pub struct PlayPlugin; pub struct PlayPlugin;
@ -194,13 +199,25 @@ fn serve_cards(
_trigger: Trigger<ServeCards>, _trigger: Trigger<ServeCards>,
in_deck: Query<(Entity, &Card, &DeckOrder)>, in_deck: Query<(Entity, &Card, &DeckOrder)>,
spots: Query<&PlayLocation>, spots: Query<&PlayLocation>,
mut top_card: Single<&mut Visibility, With<TopCard>>,
mut commands: Commands, mut commands: Commands,
) { ) {
info!( info!(
"Serving cards from deck ({} cards left)", "Serving cards from deck ({} cards left)",
in_deck.iter().len() in_deck.iter().len()
); );
if in_deck.is_empty() {
commands.trigger(UiMessage("Deck's empty!".into()));
top_card.toggle_visible_hidden();
top_card.toggle_inherited_hidden();
return;
}
let mut n = in_deck.iter().len().saturating_sub(1); let mut n = in_deck.iter().len().saturating_sub(1);
if n == 0 {
top_card.toggle_visible_hidden();
top_card.toggle_inherited_hidden();
}
// Iterate over every x, y play location // Iterate over every x, y play location
for this_x in 0..=3 { for this_x in 0..=3 {
@ -216,6 +233,11 @@ fn serve_cards(
.iter() .iter()
.find(|(_entity, _deck_card, order)| order.0 == n as u8); .find(|(_entity, _deck_card, order)| order.0 == n as u8);
n = n.saturating_sub(1); n = n.saturating_sub(1);
if n == 0 {
top_card.toggle_visible_hidden();
top_card.toggle_inherited_hidden();
}
// If that search was fruitful, pull the card from the deck and play it // If that search was fruitful, pull the card from the deck and play it
if let Some((e, _, _)) = candidate { if let Some((e, _, _)) = candidate {
commands commands

@ -32,6 +32,9 @@ pub(crate) struct AnimationStore {
pub store: HashMap<String, (AnimationGraphHandle, AnimationNodeIndex)>, pub store: HashMap<String, (AnimationGraphHandle, AnimationNodeIndex)>,
} }
#[derive(Component)]
pub(crate) struct TopCard;
/// Setup drawing our cards on the screen /// Setup drawing our cards on the screen
pub(crate) fn setup_cards( pub(crate) fn setup_cards(
mut commands: Commands, mut commands: Commands,
@ -69,7 +72,12 @@ pub(crate) fn setup_cards(
image: server.load("cards.png"), image: server.load("cards.png"),
..default() ..default()
}; };
parent.spawn((top_card_transform, top_card_sprite, Visibility::Inherited)); parent.spawn((
top_card_transform,
top_card_sprite,
Visibility::Inherited,
TopCard,
));
} }
Deck::iter_shuffled() Deck::iter_shuffled()
.enumerate() .enumerate()

Loading…
Cancel
Save