summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/card/cardlist.rs30
-rw-r--r--src/card/effect.rs23
-rw-r--r--src/card/mod.rs1
-rw-r--r--src/main.rs14
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);
}