diff options
| -rw-r--r-- | src/main.rs | 53 |
1 files changed, 34 insertions, 19 deletions
diff --git a/src/main.rs b/src/main.rs index a839b2f..14e53b9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,13 +7,27 @@ fn rand_u8() -> u8 { #[allow(dead_code)] #[derive(Copy,Clone)] +struct CardEffect { + name: &'static str, + when: usize, // TODO: Change this + 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)] +#[derive(Copy,Clone)] struct Card { n: u8, e: u8, s: u8, w: u8, owner: PlayerId, - special: Option<&'static dyn Fn()>, + effect: Option<CardEffect>, } #[allow(non_camel_case_types)] @@ -56,14 +70,22 @@ impl Default for Card { s: 0, w: 0, owner: PlayerId::default(), - special: None, + effect: None, } } } impl core::fmt::Debug for Card { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - write!(f, "Card {{\n\tn: {:?},\n\te: {:?},\n\ts: {:?},\n\tw: {:?}\n\towner: {:?}\n}}", self.n, self.e, self.s, self.w, self.owner) + if let Err(error) = write!(f, "Card {{\n\towner: {:?}\n\tn: {:?},\n\te: {:?},\n\ts: {:?},\n\tw: {:?}", self.owner, self.n, self.e, self.s, self.w) { + return Err(error); + } + if let Some(effect) = self.effect { + if let Err(error) = write!(f, "\n\teffect: {:?}", effect) { + return Err(error); + } + } + write!(f, "\n}}") } } @@ -75,7 +97,7 @@ impl Card { s: 0, w: 0, owner: owner, - special: None, + effect: None, } } @@ -264,27 +286,12 @@ impl<const SIZE: usize> core::fmt::Debug for Grid<SIZE> { } } -#[allow(dead_code)] -struct Entity { - attack: i64, - defense: i64, - special: Option<&'static dyn Fn()> -} - fn special_000() { println!("Hello, world!"); } #[allow(unused_variables)] fn main() { - let entity = Entity { - attack: 0, - defense: 0, - special: Some(&special_000), - }; - if let Some(function) = entity.special { - function(); - } let mut card = Card::new(PlayerId::PLAYER_1); println!("{:?}", card); card.n ^= 5; @@ -292,9 +299,17 @@ fn main() { card.n ^= 3; println!("{:?}", card); card.n = 254; + card.effect = Some(CardEffect { + name: "Say Hello", + when: 0, + fun: &special_000, + }); println!("{:?}", card); card.randomize(); println!("{:?}", card); + if let Some(effect) = card.effect { + (effect.fun)(); + } let mut grid = Grid::<3>::default(); println!("{:?}", grid); grid.field[0][1] = Some(card); |
