Merge PlayState with Side

main
Elijah C. Voigt 2 years ago
parent 962bc335c2
commit f9197ab157

@ -279,13 +279,13 @@ fn hydrate_camera(
debug!("Animations: {:?}", gltf.named_animations.keys()); debug!("Animations: {:?}", gltf.named_animations.keys());
// GameCamIntro1, GameCamIntro2, GameCamSide1>2, GameCamSide2>1 // GameCamIntro1, GameCamIntro2, GameCamSide1>2, GameCamSide2>1
let animation = match state.get() { let animation = match state.get() {
game::TurnState::SideA => gltf.named_animations.get( game::TurnState(game::Side::A) => gltf.named_animations.get(
tweak tweak
.get::<String>("display3d_models_animations_intro_a") .get::<String>("display3d_models_animations_intro_a")
.unwrap() .unwrap()
.as_str(), .as_str(),
), ),
game::TurnState::SideB => gltf.named_animations.get( game::TurnState(game::Side::B) => gltf.named_animations.get(
tweak tweak
.get::<String>("display3d_models_animations_intro_b") .get::<String>("display3d_models_animations_intro_b")
.unwrap() .unwrap()
@ -775,7 +775,7 @@ fn select(
// Check the side of the selection if no piece is selected // Check the side of the selection if no piece is selected
// Otherwise this is fine, select away // Otherwise this is fine, select away
let side_check = let side_check =
!selected.is_empty() || *state.get() == side; !selected.is_empty() || state.get().0 == side;
let hit_check = { let hit_check = {
// This entity was hit (tile hitboxes) // This entity was hit (tile hitboxes)
@ -1018,13 +1018,13 @@ fn switch_sides(
let gltf = gltfs.get(assets_handle).expect("Load GLTF content"); let gltf = gltfs.get(assets_handle).expect("Load GLTF content");
players.iter_mut().for_each(|mut player| { players.iter_mut().for_each(|mut player| {
let animation = match state.get() { let animation = match state.get() {
game::TurnState::SideA => gltf.named_animations.get( game::TurnState(game::Side::A) => gltf.named_animations.get(
tweak tweak
.get::<String>("display3d_models_animations_turn_a") .get::<String>("display3d_models_animations_turn_a")
.unwrap() .unwrap()
.as_str(), .as_str(),
), ),
game::TurnState::SideB => gltf.named_animations.get( game::TurnState(game::Side::B) => gltf.named_animations.get(
tweak tweak
.get::<String>("display3d_models_animations_turn_b") .get::<String>("display3d_models_animations_turn_b")
.unwrap() .unwrap()

@ -48,31 +48,14 @@ impl Plugin for GamePlugin {
} }
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States)] #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States)]
pub(crate) enum TurnState { pub(crate) struct TurnState(pub Side);
SideA,
// HACK: Opening animation starts on B side
#[default]
SideB,
}
impl std::ops::Not for TurnState { impl std::ops::Not for TurnState {
type Output = Self; type Output = Self;
fn not(self) -> Self::Output { fn not(self) -> Self::Output {
match self { let TurnState(side) = self;
TurnState::SideA => TurnState::SideB, TurnState(!side)
TurnState::SideB => TurnState::SideA,
}
}
}
// Allow comparison between turn state and sides
impl PartialEq<Side> 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,
}
} }
} }
@ -207,9 +190,11 @@ pub(crate) struct BoardIndex {
pub y: usize, pub y: usize,
} }
#[derive(Debug, Component, PartialEq, Clone, Copy)] #[derive(Debug, Component, PartialEq, Clone, Copy, Eq, Hash, Default)]
pub(crate) enum Side { pub(crate) enum Side {
A, A,
// HACK: Opening animation starts on B side
#[default]
B, B,
} }

@ -79,7 +79,6 @@ pub enum GameState {
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States, Component)] #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States, Component)]
pub(crate) enum DisplayState { pub(crate) enum DisplayState {
Display2d,
#[default] #[default]
Display3d, Display3d,
} }

Loading…
Cancel
Save