mirror of
https://github.com/sui-feng-cb/AzurLaneAutoScript1.git
synced 2026-07-13 02:54:25 +08:00
Feat: delay Daily to end of downtime
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
from datetime import datetime
|
||||
|
||||
import numpy as np
|
||||
|
||||
import module.config.server as server
|
||||
@@ -7,6 +9,7 @@ from module.combat.combat import Combat
|
||||
from module.daily.assets import *
|
||||
from module.logger import logger
|
||||
from module.ocr.ocr import Digit
|
||||
from module.smart_mgmt.utils import parse_downtime
|
||||
from module.ui.assets import BACK_ARROW, DAILY_CHECK
|
||||
from module.ui.page import page_campaign_menu, page_daily
|
||||
|
||||
@@ -335,13 +338,44 @@ class Daily(Combat):
|
||||
logger.info('Daily clear complete.')
|
||||
break
|
||||
|
||||
def _get_downtime_end(self):
|
||||
"""
|
||||
Get downtime end datetime on maintenance day.
|
||||
|
||||
Returns:
|
||||
datetime.datetime: End datetime if today is maintenance day and
|
||||
maintenance has not ended yet, or None if smart_mgmt unavailable,
|
||||
today is not maintenance day, or maintenance already ended.
|
||||
"""
|
||||
if self.config.SERVER != 'cn':
|
||||
return None
|
||||
if not self.config.cross_get('DowntimeMgmt.DowntimeStrategy.ManageDaily', False):
|
||||
return None
|
||||
window = self.config.cross_get('DowntimeMgmt.Downtime.Window', None)
|
||||
if not window:
|
||||
return None
|
||||
end_dt = parse_downtime(window)
|
||||
if end_dt is None:
|
||||
return None
|
||||
now = datetime.now()
|
||||
if end_dt.date() != now.date():
|
||||
return None
|
||||
if end_dt <= now:
|
||||
return None
|
||||
return end_dt
|
||||
|
||||
def run(self):
|
||||
"""
|
||||
Pages:
|
||||
in: Any page
|
||||
out: page_daily
|
||||
"""
|
||||
# Cannot stay in page_daily, because order is disordered.
|
||||
self.daily_run()
|
||||
|
||||
# Cannot stay in page_daily, because order is disordered.
|
||||
self.config.task_delay(server_update=True)
|
||||
end_dt = self._get_downtime_end()
|
||||
if end_dt is not None:
|
||||
logger.info('Downtime today, delay to end of downtime')
|
||||
self.config.task_delay(target=end_dt)
|
||||
else:
|
||||
self.config.task_delay(server_update=True)
|
||||
|
||||
Reference in New Issue
Block a user