diff options
author | Justin Worthe <justin@worthe-it.co.za> | 2018-09-01 20:27:57 +0200 |
---|---|---|
committer | Justin Worthe <justin@worthe-it.co.za> | 2018-09-01 20:27:57 +0200 |
commit | f7a7d40dede261bc29edf88e8a8d2bfb71c58513 (patch) | |
tree | b062cfb04efc462d3250879988559d915a99d636 /src/engine | |
parent | 95ab438eb33e67c47fb9371f3294e44dcc9e163e (diff) |
Added basic heuristic
Diffstat (limited to 'src/engine')
-rw-r--r-- | src/engine/bitwise_engine.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/engine/bitwise_engine.rs b/src/engine/bitwise_engine.rs index d54ccc0..75acb7d 100644 --- a/src/engine/bitwise_engine.rs +++ b/src/engine/bitwise_engine.rs @@ -436,4 +436,18 @@ impl Player { } self.firing_tower = (self.firing_tower + 1) % MISSILE_COOLDOWN_STATES; } + + fn any_missile_towers(&self) -> u64 { + self.missile_towers.iter().fold(0, |acc, next| acc | next) + } + + pub fn count_attack_towers_in_row(&self, y: u8) -> u32 { + let mask = 255u64 << (y * SINGLE_MAP_WIDTH); + (self.any_missile_towers() & mask).count_ones() + } + + pub fn count_energy_towers_in_row(&self, y: u8) -> u32 { + let mask = 255u64 << (y * SINGLE_MAP_WIDTH); + (self.energy_towers & mask).count_ones() + } } |