diff --git a/game/utils.py b/game/utils.py index 0355fbb2..b570e355 100644 --- a/game/utils.py +++ b/game/utils.py @@ -37,6 +37,7 @@ def knots_to_kph(value_in_knots: float) -> int: """ return int(value_in_knots * 1.852) + def mps_to_knots(value_in_mps: float) -> int: """Converts Meters Per Second To Knots @@ -44,6 +45,23 @@ def mps_to_knots(value_in_mps: float) -> int: """ return int(value_in_mps * 1.943) + +def mps_to_kph(speed: float) -> int: + """Converts meters per second to kilometers per hour. + + :arg speed Speed in m/s. + """ + return int(speed * 3.6) + + +def kph_to_mps(speed: float) -> int: + """Converts kilometers per hour to meters per second. + + :arg speed Speed in KPH. + """ + return int(speed / 3.6) + + def heading_sum(h, a) -> int: h += a if h > 360: diff --git a/gen/groundobjectsgen.py b/gen/groundobjectsgen.py index 3e16b11a..ea18eb46 100644 --- a/gen/groundobjectsgen.py +++ b/gen/groundobjectsgen.py @@ -34,6 +34,7 @@ from game.theater.theatergroundobject import ( LhaGroundObject, ShipGroundObject, ) from game.unitmap import UnitMap +from game.utils import knots_to_kph, kph_to_mps, mps_to_kph from .radios import RadioFrequency, RadioRegistry from .runways import RunwayData from .tacan import TacanBand, TacanChannel, TacanRegistry @@ -243,12 +244,16 @@ class GenericCarrierGenerator(GenericGroundObjectGenerator): return ship def steam_into_wind(self, group: ShipGroup) -> Optional[int]: - brc = self.m.weather.wind_at_ground.direction + 180 + wind = self.game.conditions.weather.wind.at_0m + brc = wind.direction + 180 + # Aim for 25kts over the deck. + carrier_speed = knots_to_kph(25) - mps_to_kph(wind.speed) for attempt in range(5): point = group.points[0].position.point_from_heading( brc, 100000 - attempt * 20000) if self.game.theater.is_in_sea(point): - group.add_waypoint(point) + group.points[0].speed = kph_to_mps(carrier_speed) + group.add_waypoint(point, carrier_speed) return brc return None