#[allow(dead_code)] #[derive(Copy,Clone)] pub struct CardEffect { pub name: &'static str, pub description: &'static str, pub when: CardEffectStates, pub handle: &'static dyn Fn(), } impl core::fmt::Debug for CardEffect { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { write!(f, "*{}* {}", self.name, self.description) } } #[allow(dead_code)] #[allow(non_snake_case)] #[derive(Copy, Clone)] pub struct CardEffectStates { pub DRAW: bool, pub BEFORE_PLACE: bool, pub DURING_PLACE: bool, pub AFTER_PLACE: bool, pub BEFORE_ATTACK: bool, pub DURING_ATTACK: bool, pub AFTER_ATTACK: bool, pub 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, } } }