#[allow(dead_code)] #[derive(Copy,Clone)] pub struct CardEffect { pub name: &'static str, pub when: CardEffectStates, // TODO: Change this pub fun: &'static dyn Fn(), } impl core::fmt::Debug for CardEffect { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { write!(f, "{}", self.name) } } #[allow(dead_code)] #[allow(non_snake_case)] #[derive(Copy, Clone)] pub struct CardEffectStates { DRAW: bool, BEFORE_PLACE: bool, DURING_PLACE: bool, AFTER_PLACE: bool, BEFORE_ATTACK: bool, DURING_ATTACK: bool, AFTER_ATTACK: bool, END_TURN: bool, } impl Default for CardEffectStates { fn default() -> Self { Self { DRAW: false, BEFORE_PLACE: false, DURING_PLACE: false, AFTER_PLACE: false, BEFORE_ATTACK: false, DURING_ATTACK: false, AFTER_ATTACK: false, END_TURN: false, } } }