begin jiang

This commit is contained in:
Tao Tien 2026-02-13 10:11:17 -08:00
parent 8c4132e628
commit 042975e561
7 changed files with 134 additions and 16 deletions

View file

@ -4,7 +4,7 @@ mod derive_alias {
Eq = ::core::cmp::PartialEq, ::core::cmp::Eq;
Ord = ..Eq, ::core::cmp::PartialOrd, ::core::cmp::PartialEq, ::core::cmp::Ord;
Base = ::core::fmt::Debug, ..Copy, ..Ord;
Base = ::core::fmt::Debug, ..Copy, ..Ord, ::core::hash::Hash;
}
}
use derive_aliases::derive;
@ -13,7 +13,7 @@ use bevy::prelude::*;
use spacetimedb::SpacetimeType;
use strum::{EnumCount, FromRepr};
#[derive(..Base, Hash, Default, FromRepr)]
#[derive(..Base, Default, FromRepr)]
#[derive(States, SpacetimeType)]
pub enum GameState {
#[default]
@ -41,18 +41,6 @@ pub enum Suit {
Dragon(Dragon),
}
impl Suit {
pub fn rank(&self) -> Option<Rank> {
match self {
Suit::Man(rank) => Some(*rank),
Suit::Pin(rank) => Some(*rank),
Suit::Sou(rank) => Some(*rank),
// Suit::Wind(wind) | Suit::Dragon(dragon) => None,
_ => None,
}
}
}
#[derive(
..Base,
Deref,
@ -63,6 +51,49 @@ pub struct Rank {
pub number: u8,
}
impl Tile {
pub fn next_rank(self) -> Option<Self> {
match self.suit {
Suit::Man(rank) if rank.number < 9 => Some(Tile {
suit: Suit::Man(Rank {
number: rank.number + 1,
}),
}),
Suit::Pin(rank) if rank.number < 9 => Some(Tile {
suit: Suit::Pin(Rank {
number: rank.number + 1,
}),
}),
Suit::Sou(rank) if rank.number < 9 => Some(Tile {
suit: Suit::Sou(Rank {
number: rank.number + 1,
}),
}),
_ => None,
}
}
pub fn prev_rank(self) -> Option<Self> {
match self.suit {
Suit::Man(rank) if rank.number > 1 => Some(Tile {
suit: Suit::Man(Rank {
number: rank.number - 1,
}),
}),
Suit::Pin(rank) if rank.number > 1 => Some(Tile {
suit: Suit::Pin(Rank {
number: rank.number - 1,
}),
}),
Suit::Sou(rank) if rank.number > 1 => Some(Tile {
suit: Suit::Sou(Rank {
number: rank.number - 1,
}),
}),
_ => None,
}
}
}
#[derive(
..Base,
FromRepr,