summaryrefslogtreecommitdiff
path: root/src/engine
diff options
context:
space:
mode:
authorJustin Worthe <justin@worthe-it.co.za>2018-08-12 11:07:41 +0200
committerJustin Worthe <justin@worthe-it.co.za>2018-08-12 11:07:41 +0200
commit6935a0c82606b95391dfd76c01e393ca99d6bf77 (patch)
tree91207be0c5e2e4e0a33f3492b719bd3abc2e25dc /src/engine
parenta760bc7543b186714b11648e8be515dcdfc49b95 (diff)
Test for iron curtain availability and normal towers
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/bitwise_engine.rs21
-rw-r--r--src/engine/constants.rs2
2 files changed, 15 insertions, 8 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;