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 crate::{deck::Card, menu::UiMessage, setup::AnimationStore, view::ViewState};
use crate::{
deck::Card,
menu::UiMessage,
setup::{AnimationStore, TopCard},
view::ViewState,
};
pub struct PlayPlugin;
@ -194,13 +199,25 @@ fn serve_cards(
_trigger: Trigger<ServeCards>,
in_deck: Query<(Entity, &Card, &DeckOrder)>,
spots: Query<&PlayLocation>,
mut top_card: Single<&mut Visibility, With<TopCard>>,
mut commands: Commands,
) {
info!(
"Serving cards from deck ({} cards left)",
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);
if n == 0 {
top_card.toggle_visible_hidden();
top_card.toggle_inherited_hidden();
}
// Iterate over every x, y play location
for this_x in 0..=3 {
@ -216,6 +233,11 @@ fn serve_cards(
.iter()
.find(|(_entity, _deck_card, order)| order.0 == n as u8);
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 let Some((e, _, _)) = candidate {
commands

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

Loading…
Cancel
Save