extract GameState

This commit is contained in:
Tao Tien 2026-02-08 18:15:09 -08:00
parent 78c199b61e
commit 6cd10329df
14 changed files with 118 additions and 28 deletions

View file

@ -1,13 +1,37 @@
mod derive_alias {
derive_aliases::define! {
Copy = ::core::clone::Clone, ::core::marker::Copy;
Eq = ::core::cmp::PartialEq, ::core::cmp::Eq;
Ord = ..Eq, ::core::cmp::PartialOrd, ::core::cmp::PartialEq, ::core::cmp::Ord;
Base = ::core::fmt::Debug, ..Copy, ..Ord;
}
}
use derive_aliases::derive;
use bevy::prelude::*;
use spacetimedb::SpacetimeType;
use strum::FromRepr;
#[derive(Component, Debug, Clone, Copy, SpacetimeType)]
#[derive(..Base, Hash, Default)]
#[derive(States, SpacetimeType)]
pub enum GameState {
#[default]
None,
Setup,
Deal,
Play,
Exit,
}
#[derive(..Base)]
#[derive(Component, SpacetimeType)]
pub struct Tile {
pub suit: Suit,
}
#[derive(/* MapEntities, */ Debug, PartialEq, PartialOrd, Eq, Ord, Clone, Copy, SpacetimeType)]
#[derive(..Base)]
#[derive(SpacetimeType)]
pub enum Suit {
Man(Rank),
Pin(Rank),
@ -28,12 +52,21 @@ impl Suit {
}
}
#[derive(Deref, DerefMut, Debug, PartialEq, PartialOrd, Eq, Ord, Clone, Copy, SpacetimeType)]
#[derive(
..Base,
Deref,
DerefMut,
)]
#[derive(SpacetimeType)]
pub struct Rank {
pub number: u8,
}
#[derive(FromRepr, Debug, PartialEq, PartialOrd, Eq, Ord, Clone, Copy, SpacetimeType)]
#[derive(
..Base,
FromRepr,
)]
#[derive(SpacetimeType)]
pub enum Wind {
Ton,
Nan,
@ -41,7 +74,11 @@ pub enum Wind {
Pei,
}
#[derive(Debug, FromRepr, PartialEq, PartialOrd, Eq, Ord, Clone, Copy, SpacetimeType)]
#[derive(
..Base,
FromRepr,
)]
#[derive(SpacetimeType)]
pub enum Dragon {
Haku,
Hatsu,