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]** Variable flight-size (2/3/4-ship) for
|
||||
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 Su-30 mod version 2.01B
|
||||
* **[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 .skilloption import skill_option
|
||||
from ..ato.starttype import StartType
|
||||
from ..weather import NightMissions
|
||||
|
||||
|
||||
@unique
|
||||
@ -105,11 +106,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(
|
||||
|
||||
@ -5,6 +5,7 @@ import logging
|
||||
import math
|
||||
import random
|
||||
from dataclasses import dataclass, field
|
||||
from enum import Enum
|
||||
from typing import Optional, TYPE_CHECKING
|
||||
|
||||
from dcs.cloud_presets import Clouds as PydcsClouds
|
||||
@ -28,6 +29,12 @@ if TYPE_CHECKING:
|
||||
from game.theater.seasonalconditions import SeasonalConditions
|
||||
|
||||
|
||||
class NightMissions(Enum):
|
||||
DayAndNight = "nightmissions_nightandday"
|
||||
OnlyDay = "nightmissions_onlyday"
|
||||
OnlyNight = "nightmissions_onlynight"
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class AtmosphericConditions:
|
||||
#: Pressure at sea level.
|
||||
@ -424,7 +431,7 @@ class Conditions:
|
||||
_start_time = datetime.datetime.combine(day, forced_time)
|
||||
else:
|
||||
_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(
|
||||
@ -439,11 +446,11 @@ class Conditions:
|
||||
theater: ConflictTheater,
|
||||
day: datetime.date,
|
||||
time_of_day: TimeOfDay,
|
||||
night_disabled: bool,
|
||||
night_day_missions: NightMissions,
|
||||
) -> 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")
|
||||
time_range = DaytimeMap(
|
||||
dawn=(datetime.time(hour=8), datetime.time(hour=9)),
|
||||
@ -451,6 +458,14 @@ class Conditions:
|
||||
dusk=(datetime.time(hour=12), datetime.time(hour=14)),
|
||||
night=(datetime.time(hour=14), datetime.time(hour=17)),
|
||||
).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:
|
||||
time_range = theater.daytime_map.range_of(time_of_day)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user