From 71f6186a88276617a8c4433fe2d3d72ff7a780c7 Mon Sep 17 00:00:00 2001 From: Raffson Date: Thu, 18 May 2023 13:40:29 +0200 Subject: [PATCH] Reuse Ghosti's NightMission conditions --- game/settings/settings.py | 2 +- game/weather/conditions.py | 23 ++++++++++++++++++++--- game/weather/weather.py | 7 ------- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/game/settings/settings.py b/game/settings/settings.py index 451311fc..e2c9ef01 100644 --- a/game/settings/settings.py +++ b/game/settings/settings.py @@ -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 diff --git a/game/weather/conditions.py b/game/weather/conditions.py index 2737d60c..797ad8d5 100644 --- a/game/weather/conditions.py +++ b/game/weather/conditions.py @@ -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) diff --git a/game/weather/weather.py b/game/weather/weather.py index 5e66f66a..bfd29665 100644 --- a/game/weather/weather.py +++ b/game/weather/weather.py @@ -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,