mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Add option to only generate night missions (#36)
Replaces the existing checkbox to disable night missions with a selector that allows you to choose between Day/Night/Day&Night
This commit is contained in:
parent
608525d5b4
commit
7d2dd0bcbe
@ -12,6 +12,7 @@
|
|||||||
* **[Mission Generation]** Use Escort & SEAD tasks for Escort & SEAD Escort flights
|
* **[Mission Generation]** Use Escort & SEAD tasks for Escort & SEAD Escort flights
|
||||||
* **[Mission Generation]** Variable flight-size (2/3/4-ship) for
|
* **[Mission Generation]** Variable flight-size (2/3/4-ship) for
|
||||||
BAI/ANTISHIP/DEAD/STRIKE/BARCAP/CAS/OCA/AIR-ASSAULT (main) missions
|
BAI/ANTISHIP/DEAD/STRIKE/BARCAP/CAS/OCA/AIR-ASSAULT (main) missions
|
||||||
|
* **[Mission Generation]** Add option to only generate night missions
|
||||||
* **[Modding]** Support for F-15D 'Baz' mod version 1.0
|
* **[Modding]** Support for F-15D 'Baz' mod version 1.0
|
||||||
* **[Modding]** Support for Su-30 mod version 2.01B
|
* **[Modding]** Support for Su-30 mod version 2.01B
|
||||||
* **[Modding]** Support for A-6A Intruder version 2.7.5.01
|
* **[Modding]** Support for A-6A Intruder version 2.7.5.01
|
||||||
|
|||||||
@ -14,6 +14,7 @@ from .minutesoption import minutes_option
|
|||||||
from .optiondescription import OptionDescription, SETTING_DESCRIPTION_KEY
|
from .optiondescription import OptionDescription, SETTING_DESCRIPTION_KEY
|
||||||
from .skilloption import skill_option
|
from .skilloption import skill_option
|
||||||
from ..ato.starttype import StartType
|
from ..ato.starttype import StartType
|
||||||
|
from ..weather import NightMissions
|
||||||
|
|
||||||
|
|
||||||
@unique
|
@unique
|
||||||
@ -105,11 +106,16 @@ class Settings:
|
|||||||
section=MISSION_DIFFICULTY_SECTION,
|
section=MISSION_DIFFICULTY_SECTION,
|
||||||
default=True,
|
default=True,
|
||||||
)
|
)
|
||||||
night_disabled: bool = boolean_option(
|
night_day_missions: NightMissions = choices_option(
|
||||||
"No night missions",
|
"Night/day mission options",
|
||||||
page=DIFFICULTY_PAGE,
|
page=DIFFICULTY_PAGE,
|
||||||
section=MISSION_DIFFICULTY_SECTION,
|
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
|
# Mission Restrictions
|
||||||
labels: str = choices_option(
|
labels: str = choices_option(
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import logging
|
|||||||
import math
|
import math
|
||||||
import random
|
import random
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
|
from enum import Enum
|
||||||
from typing import Optional, TYPE_CHECKING
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from dcs.cloud_presets import Clouds as PydcsClouds
|
from dcs.cloud_presets import Clouds as PydcsClouds
|
||||||
@ -28,6 +29,12 @@ if TYPE_CHECKING:
|
|||||||
from game.theater.seasonalconditions import SeasonalConditions
|
from game.theater.seasonalconditions import SeasonalConditions
|
||||||
|
|
||||||
|
|
||||||
|
class NightMissions(Enum):
|
||||||
|
DayAndNight = "nightmissions_nightandday"
|
||||||
|
OnlyDay = "nightmissions_onlyday"
|
||||||
|
OnlyNight = "nightmissions_onlynight"
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
class AtmosphericConditions:
|
class AtmosphericConditions:
|
||||||
#: Pressure at sea level.
|
#: Pressure at sea level.
|
||||||
@ -424,7 +431,7 @@ class Conditions:
|
|||||||
_start_time = datetime.datetime.combine(day, forced_time)
|
_start_time = datetime.datetime.combine(day, forced_time)
|
||||||
else:
|
else:
|
||||||
_start_time = cls.generate_start_time(
|
_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(
|
return cls(
|
||||||
@ -439,11 +446,11 @@ class Conditions:
|
|||||||
theater: ConflictTheater,
|
theater: ConflictTheater,
|
||||||
day: datetime.date,
|
day: datetime.date,
|
||||||
time_of_day: TimeOfDay,
|
time_of_day: TimeOfDay,
|
||||||
night_disabled: bool,
|
night_day_missions: NightMissions,
|
||||||
) -> datetime.datetime:
|
) -> datetime.datetime:
|
||||||
if night_disabled:
|
from game.theater import DaytimeMap
|
||||||
from game.theater import DaytimeMap
|
|
||||||
|
|
||||||
|
if night_day_missions == NightMissions.OnlyDay:
|
||||||
logging.info("Skip Night mission due to user settings")
|
logging.info("Skip Night mission due to user settings")
|
||||||
time_range = DaytimeMap(
|
time_range = DaytimeMap(
|
||||||
dawn=(datetime.time(hour=8), datetime.time(hour=9)),
|
dawn=(datetime.time(hour=8), datetime.time(hour=9)),
|
||||||
@ -451,6 +458,14 @@ class Conditions:
|
|||||||
dusk=(datetime.time(hour=12), datetime.time(hour=14)),
|
dusk=(datetime.time(hour=12), datetime.time(hour=14)),
|
||||||
night=(datetime.time(hour=14), datetime.time(hour=17)),
|
night=(datetime.time(hour=14), datetime.time(hour=17)),
|
||||||
).range_of(time_of_day)
|
).range_of(time_of_day)
|
||||||
|
elif night_day_missions == NightMissions.OnlyNight:
|
||||||
|
logging.info("Skip Day mission due to user settings")
|
||||||
|
time_range = DaytimeMap(
|
||||||
|
dawn=(datetime.time(hour=0), datetime.time(hour=3)),
|
||||||
|
day=(datetime.time(hour=3), datetime.time(hour=6)),
|
||||||
|
dusk=(datetime.time(hour=21), datetime.time(hour=22)),
|
||||||
|
night=(datetime.time(hour=22), datetime.time(hour=23)),
|
||||||
|
).range_of(time_of_day)
|
||||||
else:
|
else:
|
||||||
time_range = theater.daytime_map.range_of(time_of_day)
|
time_range = theater.daytime_map.range_of(time_of_day)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user