begin jiang
This commit is contained in:
parent
8c4132e628
commit
042975e561
7 changed files with 134 additions and 16 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue