diff options
author | Justin Worthe <justin@worthe-it.co.za> | 2018-08-12 11:07:41 +0200 |
---|---|---|
committer | Justin Worthe <justin@worthe-it.co.za> | 2018-08-12 11:07:41 +0200 |
commit | 6935a0c82606b95391dfd76c01e393ca99d6bf77 (patch) | |
tree | 91207be0c5e2e4e0a33f3492b719bd3abc2e25dc /src | |
parent | a760bc7543b186714b11648e8be515dcdfc49b95 (diff) |
Test for iron curtain availability and normal towers
Diffstat (limited to 'src')
-rw-r--r-- | src/engine/bitwise_engine.rs | 21 | ||||
-rw-r--r-- | src/engine/constants.rs | 2 | ||||
-rw-r--r-- | src/input/json.rs | 10 |
3 files changed, 24 insertions, 9 deletions
diff --git a/src/engine/bitwise_engine.rs b/src/engine/bitwise_engine.rs index fb46567..d8cbec6 100644 --- a/src/engine/bitwise_engine.rs +++ b/src/engine/bitwise_engine.rs @@ -21,6 +21,7 @@ pub struct BitwiseGameState { pub opponent: Player, pub player_buildings: PlayerBuildings, pub opponent_buildings: PlayerBuildings, + pub round: u16 } #[derive(Debug, Clone, PartialEq, Eq)] @@ -64,8 +65,8 @@ impl BitwiseGameState { BitwiseGameState::update_construction(&mut self.player_buildings); BitwiseGameState::update_construction(&mut self.opponent_buildings); - BitwiseGameState::update_iron_curtain(&mut self.player_buildings); - BitwiseGameState::update_iron_curtain(&mut self.opponent_buildings); + BitwiseGameState::update_iron_curtain(&mut self.player_buildings, self.round); + BitwiseGameState::update_iron_curtain(&mut self.opponent_buildings, self.round); BitwiseGameState::fire_teslas(&mut self.player, &mut self.player_buildings, &mut self.opponent, &mut self.opponent_buildings); @@ -78,6 +79,8 @@ impl BitwiseGameState { BitwiseGameState::add_energy(&mut self.player, &mut self.player_buildings); BitwiseGameState::add_energy(&mut self.opponent, &mut self.opponent_buildings); + self.round += 1; + self.update_status(); self.status } @@ -142,12 +145,14 @@ fn find_bit_index_from_rank(occupied: u64, i: u64) -> u8 { impl BitwiseGameState { pub fn new( player: Player, opponent: Player, - player_buildings: PlayerBuildings, opponent_buildings: PlayerBuildings + player_buildings: PlayerBuildings, opponent_buildings: PlayerBuildings, + round: u16 ) -> BitwiseGameState { BitwiseGameState { status: GameStatus::Continue, player, opponent, - player_buildings, opponent_buildings + player_buildings, opponent_buildings, + round } } @@ -316,9 +321,11 @@ impl BitwiseGameState { player_buildings.unconstructed.truncate(buildings_len); } - fn update_iron_curtain(player_buildings: &mut PlayerBuildings) { - //TODO: Get in current round and set available to true - player_buildings.iron_curtain_remaining -= 1; + fn update_iron_curtain(player_buildings: &mut PlayerBuildings, round: u16) { + if round != 0 && round % IRON_CURTAIN_UNLOCK_INTERVAL == 0 { + player_buildings.iron_curtain_available = true; + } + player_buildings.iron_curtain_remaining = player_buildings.iron_curtain_remaining.saturating_sub(1); } fn fire_teslas(player: &mut Player, player_buildings: &mut PlayerBuildings, opponent: &mut Player, opponent_buildings: &mut PlayerBuildings) { diff --git a/src/engine/constants.rs b/src/engine/constants.rs index 11afa29..9ece36d 100644 --- a/src/engine/constants.rs +++ b/src/engine/constants.rs @@ -27,7 +27,7 @@ pub const ENERGY_PRICE: u16 = 20; pub const ENERGY_CONSTRUCTION_TIME: u8 = 1; pub const IRON_CURTAIN_PRICE: u16 = 100; -pub const IRON_CURTAIN_UNLOCK_INTERVAL: u8 = 30; +pub const IRON_CURTAIN_UNLOCK_INTERVAL: u16 = 30; pub const IRON_CURTAIN_DURATION: u8 = 6; pub const DECONSTRUCT_ENERGY: u16 = 5; diff --git a/src/input/json.rs b/src/input/json.rs index 32f98d0..544e5ed 100644 --- a/src/input/json.rs +++ b/src/input/json.rs @@ -21,12 +21,19 @@ pub fn read_bitwise_state_from_file(filename: &str) -> Result<bitwise_engine::Bi #[derive(Deserialize)] #[serde(rename_all = "camelCase")] struct State { + game_details: GameDetails, players: Vec<Player>, game_map: Vec<Vec<GameCell>>, } #[derive(Deserialize)] #[serde(rename_all = "camelCase")] +struct GameDetails { + round: u16 +} + +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] struct Player { player_type: char, energy: u16, @@ -149,7 +156,8 @@ impl State { bitwise_engine::BitwiseGameState::new( player, opponent, - player_buildings, opponent_buildings + player_buildings, opponent_buildings, + self.game_details.round ) } |