use crate::rules::*;
use rules::BattlefieldSeed;
use weasel::creature::CreatureId;
use weasel::team::TeamId;
use weasel::{
AlterSpace, Battle, BattleController, CreateCreature, CreateTeam, EventTrigger, ResetSpace,
Server,
};
mod rules;
static TEAM_ID: TeamId<CustomRules> = 1;
static CREATURE_1: CreatureId<CustomRules> = 1;
static CREATURE_2: CreatureId<CustomRules> = 2;
static CREATURE_3: CreatureId<CustomRules> = 3;
fn main() {
let battle = Battle::builder(CustomRules::new()).build();
let mut server = Server::builder(battle).build();
ResetSpace::trigger(&mut server)
.seed(BattlefieldSeed::TwoDimensions)
.fire()
.unwrap();
println!("Battlefield:\n{}", server.battle().space().model());
println!("Spawning three creatures...");
CreateTeam::trigger(&mut server, TEAM_ID).fire().unwrap();
CreateCreature::trigger(&mut server, CREATURE_1, TEAM_ID, Square { x: 1, y: 0 })
.fire()
.unwrap();
CreateCreature::trigger(&mut server, CREATURE_2, TEAM_ID, Square { x: 3, y: 3 })
.fire()
.unwrap();
CreateCreature::trigger(&mut server, CREATURE_3, TEAM_ID, Square { x: 4, y: 3 })
.fire()
.unwrap();
println!();
println!("Battlefield:\n{}", server.battle().space().model());
println!("Placing traps on the diagonals!");
AlterSpace::trigger(
&mut server,
vec![
Square { x: 0, y: 0 },
Square { x: 1, y: 1 },
Square { x: 2, y: 2 },
Square { x: 3, y: 3 },
Square { x: 4, y: 4 },
Square { x: 0, y: 4 },
Square { x: 1, y: 3 },
Square { x: 3, y: 1 },
Square { x: 4, y: 0 },
],
)
.fire()
.unwrap();
assert_eq!(server.battle().entities().entities().count(), 2);
println!();
println!("Battlefield:\n{}", server.battle().space().model());
println!("Removing the y-axis!");
ResetSpace::trigger(&mut server)
.seed(BattlefieldSeed::OneDimension)
.fire()
.unwrap();
println!();
println!("Battlefield:\n{}", server.battle().space().model());
}