diff --git a/src/deck.rs b/src/deck.rs index a977ca9..f4bee9b 100644 --- a/src/deck.rs +++ b/src/deck.rs @@ -55,12 +55,14 @@ impl Deck { 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); - } + (0..2).iter().for_each(|_| { + (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); + } + }); }); base } diff --git a/src/setup.rs b/src/setup.rs index 99cc4df..4c35b12 100644 --- a/src/setup.rs +++ b/src/setup.rs @@ -20,25 +20,27 @@ impl Plugin for SetupPlugin { /// Setup drawing our cards on the screen pub(crate) fn setup_cards(mut commands: Commands, deck: Res) { - Deck::iter_cards().enumerate().for_each(|(i, this_card)| { - let this = deck - .cards - .get(&this_card) - .unwrap_or_else(|| panic!("fech card sprite {:?}", this_card)) - .clone(); - let this_sprite = Sprite { - custom_size: Some(Vec2::new(80.0, 128.0)), - ..this - }; - let order = play::DeckOrder(i as u8); - commands - .spawn((this_sprite, this_card, order, Visibility::Hidden)) - .observe(play::place_card) - .observe(debug::set_debug_card) - .observe(debug::hide_debug_card) - .observe(play::reset_rotation) - .observe(play::toggle_selected); - }); + Deck::iter_shuffled() + .enumerate() + .for_each(|(i, this_card)| { + let this = deck + .cards + .get(&this_card) + .unwrap_or_else(|| panic!("fech card sprite {:?}", this_card)) + .clone(); + let this_sprite = Sprite { + custom_size: Some(Vec2::new(80.0, 128.0)), + ..this + }; + let order = play::DeckOrder(i as u8); + commands + .spawn((this_sprite, this_card, order, Visibility::Hidden)) + .observe(play::place_card) + .observe(debug::set_debug_card) + .observe(debug::hide_debug_card) + .observe(play::reset_rotation) + .observe(play::toggle_selected); + }); } /// Setup our camera to view cardson the screen diff --git a/todo.txt b/todo.txt index 2188e0b..19d805e 100644 --- a/todo.txt +++ b/todo.txt @@ -1,9 +1,4 @@ TODO: -* Check for sets -* Capture valid sets -* Shuffle deck -* Serve out 12 cards -* Deal out additional cards after set captured * Reset game (click new game button) * Track score (number of sets) * Make button(s) look pretty