From 83c15f7c6476135ceaf29b0a552ccc1c917e05aa Mon Sep 17 00:00:00 2001 From: Elijah Voigt Date: Fri, 13 Dec 2024 21:11:19 -0800 Subject: [PATCH] Simplified dealing logic so we always have one set --- Cargo.lock | 1 + Cargo.toml | 1 + src/deck.rs | 18 ++++++------ src/play.rs | 83 +++++++++++++++++++++++------------------------------ todo.txt | 26 ++++++----------- 5 files changed, 55 insertions(+), 74 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c8df7c7..ba88a52 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3564,6 +3564,7 @@ name = "set" version = "0.1.0" dependencies = [ "bevy", + "rand", "wasm-bindgen", ] diff --git a/Cargo.toml b/Cargo.toml index 2646d4c..829c7c8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,7 @@ edition = "2021" [dependencies] wasm-bindgen = { version = "= 0.2.95" } bevy = "0.15" +rand = "0.8.5" [profile.dev] opt-level = 1 diff --git a/src/deck.rs b/src/deck.rs index 29c0c4b..28b317f 100644 --- a/src/deck.rs +++ b/src/deck.rs @@ -52,16 +52,16 @@ impl Deck { } pub(crate) fn shuffled() -> Vec { - let rs = RandomState::new(); let mut base = Self::cards(); - let len = base.len(); - (1..len).into_iter().for_each(|i| { - let a = rs.hash_one(base[i]) % (len as u64); - let b = rs.hash_one(base[i - 1]) % (len as u64); - if a > b { - base.swap(a as usize, b as usize); - } - }); + + { + use rand::seq::SliceRandom; + use rand::thread_rng; + + let mut rng = thread_rng(); + + base.as_mut_slice().shuffle(&mut rng); + } base } diff --git a/src/play.rs b/src/play.rs index d099c52..e25d8f9 100644 --- a/src/play.rs +++ b/src/play.rs @@ -6,9 +6,11 @@ pub struct PlayPlugin; impl Plugin for PlayPlugin { fn build(&self, app: &mut App) { - app.add_observer(serve_new_cards) - .add_systems(OnEnter(GameState::Main), serve_cards) - .add_systems(Update, rotate_cards); + app.add_event::() + .add_observer(serve_cards) + .add_observer(fill_cards) + .add_systems(OnEnter(GameState::Main), deal_table) + .add_systems(Update, spin_cards); } } @@ -32,7 +34,7 @@ pub(crate) struct PlayLocation { pub(crate) struct SetNumber(pub u8); /// Debug system rotating selected cards for visual flare -fn rotate_cards(mut query: Query<&mut Transform, (With, With)>, time: Res