From f9197ab157c2abd16610f22320643a14117d9e85 Mon Sep 17 00:00:00 2001 From: "Elijah C. Voigt" Date: Sun, 4 Feb 2024 19:36:46 -0800 Subject: [PATCH] Merge PlayState with Side --- src/display3d.rs | 10 +++++----- src/game.rs | 27 ++++++--------------------- src/main.rs | 1 - 3 files changed, 11 insertions(+), 27 deletions(-) diff --git a/src/display3d.rs b/src/display3d.rs index 179e8da..c47767d 100644 --- a/src/display3d.rs +++ b/src/display3d.rs @@ -279,13 +279,13 @@ fn hydrate_camera( debug!("Animations: {:?}", gltf.named_animations.keys()); // GameCamIntro1, GameCamIntro2, GameCamSide1>2, GameCamSide2>1 let animation = match state.get() { - game::TurnState::SideA => gltf.named_animations.get( + game::TurnState(game::Side::A) => gltf.named_animations.get( tweak .get::("display3d_models_animations_intro_a") .unwrap() .as_str(), ), - game::TurnState::SideB => gltf.named_animations.get( + game::TurnState(game::Side::B) => gltf.named_animations.get( tweak .get::("display3d_models_animations_intro_b") .unwrap() @@ -775,7 +775,7 @@ fn select( // Check the side of the selection if no piece is selected // Otherwise this is fine, select away let side_check = - !selected.is_empty() || *state.get() == side; + !selected.is_empty() || state.get().0 == side; let hit_check = { // This entity was hit (tile hitboxes) @@ -1018,13 +1018,13 @@ fn switch_sides( let gltf = gltfs.get(assets_handle).expect("Load GLTF content"); players.iter_mut().for_each(|mut player| { let animation = match state.get() { - game::TurnState::SideA => gltf.named_animations.get( + game::TurnState(game::Side::A) => gltf.named_animations.get( tweak .get::("display3d_models_animations_turn_a") .unwrap() .as_str(), ), - game::TurnState::SideB => gltf.named_animations.get( + game::TurnState(game::Side::B) => gltf.named_animations.get( tweak .get::("display3d_models_animations_turn_b") .unwrap() diff --git a/src/game.rs b/src/game.rs index 9062b37..d370810 100644 --- a/src/game.rs +++ b/src/game.rs @@ -48,31 +48,14 @@ impl Plugin for GamePlugin { } #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States)] -pub(crate) enum TurnState { - SideA, - // HACK: Opening animation starts on B side - #[default] - SideB, -} +pub(crate) struct TurnState(pub Side); impl std::ops::Not for TurnState { type Output = Self; fn not(self) -> Self::Output { - match self { - TurnState::SideA => TurnState::SideB, - TurnState::SideB => TurnState::SideA, - } - } -} - -// Allow comparison between turn state and sides -impl PartialEq for TurnState { - fn eq(&self, other: &Side) -> bool { - match (self, other) { - (TurnState::SideA, Side::A) | (TurnState::SideB, Side::B) => true, - (TurnState::SideB, Side::A) | (TurnState::SideA, Side::B) => false, - } + let TurnState(side) = self; + TurnState(!side) } } @@ -207,9 +190,11 @@ pub(crate) struct BoardIndex { pub y: usize, } -#[derive(Debug, Component, PartialEq, Clone, Copy)] +#[derive(Debug, Component, PartialEq, Clone, Copy, Eq, Hash, Default)] pub(crate) enum Side { A, + // HACK: Opening animation starts on B side + #[default] B, } diff --git a/src/main.rs b/src/main.rs index 1dc3d59..8b53d44 100644 --- a/src/main.rs +++ b/src/main.rs @@ -79,7 +79,6 @@ pub enum GameState { #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States, Component)] pub(crate) enum DisplayState { - Display2d, #[default] Display3d, }