diff options
-rw-r--r-- | src/knowledge.rs | 2 | ||||
-rw-r--r-- | src/ships.rs | 7 |
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 + } } |