mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Weather and exact time of day information is helpful during mission planning, so generate it at the start of the turn rather than at takeoff time. Another advantage aside from planning is that we can now use the wind information to set carrier headings and takeoff runways appropriately.
37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
from typing import Optional
|
|
|
|
from dcs.mission import Mission
|
|
|
|
from game.weather import Clouds, Fog, Conditions, WindConditions
|
|
|
|
|
|
class EnvironmentGenerator:
|
|
def __init__(self, mission: Mission, conditions: Conditions) -> None:
|
|
self.mission = mission
|
|
self.conditions = conditions
|
|
|
|
def set_clouds(self, clouds: Optional[Clouds]) -> None:
|
|
if clouds is None:
|
|
return
|
|
self.mission.weather.clouds_base = clouds.base
|
|
self.mission.weather.clouds_thickness = clouds.thickness
|
|
self.mission.weather.clouds_density = clouds.density
|
|
self.mission.weather.clouds_iprecptns = clouds.precipitation
|
|
|
|
def set_fog(self, fog: Optional[Fog]) -> None:
|
|
if fog is None:
|
|
return
|
|
self.mission.weather.fog_visibility = fog.visibility
|
|
self.mission.weather.fog_thickness = fog.thickness
|
|
|
|
def set_wind(self, wind: WindConditions) -> None:
|
|
self.mission.weather.wind_at_ground = wind.at_0m
|
|
self.mission.weather.wind_at_2000 = wind.at_2000m
|
|
self.mission.weather.wind_at_8000 = wind.at_8000m
|
|
|
|
def generate(self):
|
|
self.mission.start_time = self.conditions.start_time
|
|
self.set_clouds(self.conditions.weather.clouds)
|
|
self.set_fog(self.conditions.weather.fog)
|
|
self.set_wind(self.conditions.weather.wind)
|