diff options
| author | Christian Cunningham <cc@localhost> | 2024-02-09 16:26:51 -0800 |
|---|---|---|
| committer | Christian Cunningham <cc@localhost> | 2024-02-09 16:26:51 -0800 |
| commit | 40441f9a7a38fe95396e7a6dc7fb08397529b55d (patch) | |
| tree | d9c95fe379552e806529f897e58d3231c2972bfd | |
| parent | 5566537157361003277f043b8e3ea9a387ebb206 (diff) | |
| -rw-r--r-- | src/card/cardlist.rs | 30 | ||||
| -rw-r--r-- | src/card/effect.rs | 23 | ||||
| -rw-r--r-- | src/card/mod.rs | 1 | ||||
| -rw-r--r-- | src/main.rs | 14 |
4 files changed, 54 insertions, 14 deletions
diff --git a/src/card/cardlist.rs b/src/card/cardlist.rs new file mode 100644 index 0000000..ac33cc4 --- /dev/null +++ b/src/card/cardlist.rs @@ -0,0 +1,30 @@ +use crate::card::card::*; +use crate::card::player::*; +use crate::card::effect::*; + +fn effect_0000() { + println!("Greeting's Friend"); +} + +pub const CARD_0000: Card = Card { + n: 100, + e: 150, + s: 50, + w: 200, + owner: PlayerId::NONE, + effect: Some(CardEffect { + name: "Greet Opponent", + description: "My Greetings", + when: CardEffectStates { + DRAW: false, + BEFORE_PLACE: false, + DURING_PLACE: false, + AFTER_PLACE: true, + BEFORE_ATTACK: false, + DURING_ATTACK: false, + AFTER_ATTACK: false, + END_TURN: false, + }, + handle: &effect_0000, + }), +}; diff --git a/src/card/effect.rs b/src/card/effect.rs index 65e54c7..24d0a0a 100644 --- a/src/card/effect.rs +++ b/src/card/effect.rs @@ -2,13 +2,14 @@ #[derive(Copy,Clone)] pub struct CardEffect { pub name: &'static str, - pub when: CardEffectStates, // TODO: Change this - pub fun: &'static dyn Fn(), + 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) + write!(f, "*{}* {}", self.name, self.description) } } @@ -16,14 +17,14 @@ impl core::fmt::Debug for CardEffect { #[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, + 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 { diff --git a/src/card/mod.rs b/src/card/mod.rs index 64eb9b5..79c0339 100644 --- a/src/card/mod.rs +++ b/src/card/mod.rs @@ -1,6 +1,7 @@ pub mod card; pub mod effect; pub mod player; +pub mod cardlist; //pub use card::*; //pub use effect::*; //pub use player::*; diff --git a/src/main.rs b/src/main.rs index 01c8fbb..3bac285 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ mod card; mod grid; use crate::card::*; +use crate::card::cardlist::*; use crate::card::card::Card; use crate::grid::*; use rand::Rng; @@ -11,7 +12,7 @@ fn rand_u8() -> u8 { } fn special_000() { - println!("Hello, world!"); + println!("Hello!"); } #[allow(unused_variables)] @@ -25,19 +26,26 @@ fn main() { card.n = 254; card.effect = Some(effect::CardEffect { name: "Say Hello", + description: "Tells the Opponent 'Hello'", when: card::effect::CardEffectStates::default(), - fun: &special_000, + handle: &special_000, }); println!("{:?}", card); card.randomize(); println!("{:?}", card); if let Some(effect) = card.effect { - (effect.fun)(); + (effect.handle)(); } let mut grid = Grid::<4>::default(); println!("{:?}", grid); grid.field[0][1] = Some(card); + grid.field[0][2] = Some(CARD_0000); println!("{:?}", grid); + if let Some(gcard) = grid.field[0][2] { + if let Some(effect) = gcard.effect { + (effect.handle)(); + } + } grid.randomize(); println!("{:?}", grid); } |
