use bevy::prelude::*; use strum::FromRepr; #[derive(Component)] pub enum Tile { Pin(Rank), Sou(Rank), Man(Rank), Wind(Wind), Dragon(Dragon), } #[derive(Deref, DerefMut)] pub struct Rank(u8); #[derive(FromRepr)] pub enum Wind { Ton, Nan, Shaa, Pei, } #[derive(FromRepr)] pub enum Dragon { Haku, Hatsu, Chun, } #[derive(Component)] pub struct Dora; pub fn init_tiles(mut commands: Commands) { for _ in 0..4 { for i in 1..=9 { commands.spawn(Tile::Pin(Rank(i))); commands.spawn(Tile::Sou(Rank(i))); commands.spawn(Tile::Man(Rank(i))); } for i in 0..4 { commands.spawn(Tile::Wind(Wind::from_repr(i).unwrap())); } for i in 0..3 { commands.spawn(Tile::Dragon(Dragon::from_repr(i).unwrap())); } } }