Reuse Ghosti's NightMission conditions

This commit is contained in:
Raffson 2023-05-18 13:40:29 +02:00
parent e3fce5fddc
commit 71f6186a88
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99
3 changed files with 21 additions and 11 deletions

View File

@ -14,7 +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
from ..weather.conditions import NightMissions
Views = ForcedOptions.Views

View File

@ -4,6 +4,7 @@ import datetime
import logging
import random
from dataclasses import dataclass
from enum import Enum
from game.settings import Settings
from game.theater import ConflictTheater, DaytimeMap, SeasonalConditions
@ -12,6 +13,12 @@ from game.timeofday import TimeOfDay
from game.weather.weather import Weather, Thunderstorm, Raining, Cloudy, ClearSkies
class NightMissions(Enum):
DayAndNight = "nightmissions_nightandday"
OnlyDay = "nightmissions_onlyday"
OnlyNight = "nightmissions_onlynight"
@dataclass
class Conditions:
time_of_day: TimeOfDay
@ -32,7 +39,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(
@ -47,9 +54,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
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)),
@ -57,6 +66,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)

View File

@ -4,7 +4,6 @@ import datetime
import logging
import math
import random
from enum import Enum
from abc import ABC, abstractmethod
from typing import Optional, TYPE_CHECKING
@ -27,12 +26,6 @@ if TYPE_CHECKING:
from game.theater.seasonalconditions import SeasonalConditions
class NightMissions(Enum):
DayAndNight = "nightmissions_nightandday"
OnlyDay = "nightmissions_onlyday"
OnlyNight = "nightmissions_onlynight"
class Weather(ABC):
def __init__(
self,