Added option for only night missions.

- Moved the night mission setting back from the Mission restrictions section to the Mission difficulty section.
- Changed the Night/day mission option into a dropdown menu.

Resolves #1786
This commit is contained in:
MetalStormGhost
2021-11-24 00:12:18 +02:00
committed by RndName
parent 475cb4851a
commit d2eb98bcc5
3 changed files with 30 additions and 7 deletions

View File

@@ -23,6 +23,12 @@ class AutoAtoBehavior(Enum):
Prefer = "Prefer player pilots"
class NightMissions(Enum):
DayAndNight = "nightmissions_nightandday"
OnlyDay = "nightmissions_onlyday"
OnlyNight = "nightmissions_onlynight"
DIFFICULTY_PAGE = "Difficulty"
AI_DIFFICULTY_SECTION = "AI Difficulty"
@@ -104,11 +110,16 @@ class Settings:
section=MISSION_DIFFICULTY_SECTION,
default=True,
)
night_disabled: bool = boolean_option(
"No night missions",
night_day_missions: NightMissions = choices_option(
"Night/day mission options",
page=DIFFICULTY_PAGE,
section=MISSION_DIFFICULTY_SECTION,
default=False,
choices={
"Generate night and day missions": NightMissions.DayAndNight,
"Only generate day missions": NightMissions.OnlyDay,
"Only generate night missions": NightMissions.OnlyNight,
},
default=NightMissions.DayAndNight,
)
# Mission Restrictions
labels: str = choices_option(

View File

@@ -10,7 +10,7 @@ from typing import Optional, TYPE_CHECKING, Any
from dcs.cloud_presets import Clouds as PydcsClouds
from dcs.weather import CloudPreset, Weather as PydcsWeather, Wind
from game.settings import Settings
from game.settings.settings import Settings, NightMissions
from game.utils import Distance, Heading, meters, interpolate, Pressure, inches_hg
from game.theater.seasonalconditions import determine_season
@@ -301,7 +301,10 @@ class Conditions:
settings: Settings,
) -> Conditions:
_start_time = cls.generate_start_time(
theater, day, time_of_day, settings.night_disabled
theater,
day,
time_of_day,
settings.night_day_missions,
)
return cls(
time_of_day=time_of_day,
@@ -315,9 +318,9 @@ class Conditions:
theater: ConflictTheater,
day: datetime.date,
time_of_day: TimeOfDay,
night_disabled: bool,
night_day_missions: NightMissions,
) -> datetime.datetime:
if night_disabled:
if night_day_missions == NightMissions.OnlyDay:
logging.info("Skip Night mission due to user settings")
time_range = {
TimeOfDay.Dawn: (8, 9),
@@ -325,6 +328,14 @@ class Conditions:
TimeOfDay.Dusk: (12, 14),
TimeOfDay.Night: (14, 17),
}[time_of_day]
elif night_day_missions == NightMissions.OnlyNight:
logging.info("Skip Day mission due to user settings")
time_range = {
TimeOfDay.Dawn: (0, 3),
TimeOfDay.Day: (3, 6),
TimeOfDay.Dusk: (21, 22),
TimeOfDay.Night: (22, 23),
}[time_of_day]
else:
time_range = theater.daytime_map[time_of_day.value]