From 6935a0c82606b95391dfd76c01e393ca99d6bf77 Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Sun, 12 Aug 2018 11:07:41 +0200 Subject: Test for iron curtain availability and normal towers --- src/engine/bitwise_engine.rs | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'src/engine/bitwise_engine.rs') 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) { -- cgit v1.2.3