summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/knowledge.rs2
-rw-r--r--src/ships.rs7
2 files changed, 8 insertions, 1 deletions
diff --git a/src/knowledge.rs b/src/knowledge.rs
index e12a8b2..a9f39e3 100644
--- a/src/knowledge.rs
+++ b/src/knowledge.rs
@@ -50,7 +50,7 @@ impl Knowledge {
new_knowledge.charging_weapons = available_weapons.iter()
.filter(|weapon| weapon.energy_cost(state.map_size) > energy)
- .map(|weapon| (weapon.clone(), weapon.energy_cost(state.map_size) - energy))
+ .map(|weapon| (weapon.clone(), weapon.single_shot_rounds_to_ready(energy, state.map_size)))
.collect();
match self.last_action {
diff --git a/src/ships.rs b/src/ships.rs
index e37fe33..104e986 100644
--- a/src/ships.rs
+++ b/src/ships.rs
@@ -54,6 +54,13 @@ impl Weapon {
&SeekerMissle => 10*epr
}
}
+ pub fn single_shot_rounds_to_ready(&self, current_energy: u16, map_size: u16) -> u16 {
+ let single_shot_cost = Weapon::SingleShot.energy_cost(map_size);
+ let energy_per_round = Weapon::energy_per_round(map_size) - single_shot_cost;
+ let required_energy = self.energy_cost(map_size) - current_energy;
+ //weird plus is to make the integer rounding up instead of down
+ (required_energy + energy_per_round - 1) / energy_per_round
+ }
}