2020-04-10 14:18:10 +08:00
|
|
|
from module.base.timer import Timer
|
2020-05-15 14:18:14 +08:00
|
|
|
from module.combat.combat import Combat
|
2020-04-16 14:39:31 +08:00
|
|
|
from module.handler.assets import *
|
2020-05-15 14:18:14 +08:00
|
|
|
from module.logger import logger
|
2020-05-19 22:58:25 +08:00
|
|
|
from datetime import datetime, timedelta
|
2020-04-12 13:54:06 +08:00
|
|
|
from module.ui.ui import MAIN_CHECK, EVENT_LIST_CHECK, BACK_ARROW
|
2020-04-10 14:18:10 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class LoginHandler(Combat):
|
2020-05-19 22:58:25 +08:00
|
|
|
start_time = datetime.now()
|
|
|
|
|
|
2020-04-10 14:18:10 +08:00
|
|
|
def handle_app_login(self):
|
|
|
|
|
logger.hr('App login')
|
|
|
|
|
|
2020-04-28 14:37:13 +08:00
|
|
|
confirm_timer = Timer(1.5, count=4)
|
2020-04-10 14:18:10 +08:00
|
|
|
while 1:
|
|
|
|
|
self.device.screenshot()
|
|
|
|
|
|
|
|
|
|
if self.handle_get_items(save_get_items=False):
|
|
|
|
|
continue
|
|
|
|
|
if self.handle_get_ship():
|
|
|
|
|
continue
|
Add: 适配第一章, 修复大量bug
- 修复处理夜间委托时, 出现递归调用的问题
- 增加红脸出击确认的功能
- 增加了透视识别错误图片保存的开关
- 修复了地图太小时, 透视识别报错的问题
- 修复了相机位于地图外时, 透视识别出错的问题
- 修复了离开退役时, 会连击的问题
- 修复了同时出现低心情和船坞已满弹窗时, 卡住的问题
- 更新了一键退役实装后的安全点击的位置
- 修复了换装滑动失败时, 卡住的问题
- 修复了关闭自动收获后, 出现委托完成的提示是, 进图卡住的问题
- 修复了, 无正在跑的委托时, 报错的问题
2020-04-11 15:23:51 +08:00
|
|
|
if self.appear_then_click(LOGIN_ANNOUNCE, offset=(30, 30), interval=1):
|
2020-04-10 14:18:10 +08:00
|
|
|
continue
|
2020-04-12 13:54:06 +08:00
|
|
|
if self.appear(EVENT_LIST_CHECK, offset=(30, 30), interval=1):
|
|
|
|
|
self.device.click(BACK_ARROW)
|
2020-04-10 14:18:10 +08:00
|
|
|
continue
|
2020-04-16 14:39:31 +08:00
|
|
|
if self.appear_then_click(LOGIN_GAME_UPDATE, offset=(30, 30), interval=1):
|
|
|
|
|
continue
|
|
|
|
|
if self.appear_then_click(LOGIN_RETURN_SIGN, offset=(30, 30), interval=1):
|
|
|
|
|
continue
|
2020-04-10 14:18:10 +08:00
|
|
|
|
|
|
|
|
if self.info_bar_count() and self.appear_then_click(LOGIN_CHECK, interval=0.5):
|
|
|
|
|
logger.info('Login success')
|
|
|
|
|
if self.appear(MAIN_CHECK):
|
2020-04-25 00:11:44 +08:00
|
|
|
if confirm_timer.reached():
|
|
|
|
|
logger.info('Login to main confirm')
|
|
|
|
|
break
|
2020-04-28 22:51:32 +08:00
|
|
|
else:
|
|
|
|
|
confirm_timer.reset()
|
2020-04-10 14:18:10 +08:00
|
|
|
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
def app_restart(self):
|
|
|
|
|
logger.hr('App restart')
|
|
|
|
|
self.device.app_stop()
|
|
|
|
|
self.device.app_start()
|
|
|
|
|
self.handle_app_login()
|
|
|
|
|
|
|
|
|
|
def app_ensure_start(self):
|
|
|
|
|
if not self.device.app_is_running():
|
|
|
|
|
self.device.app_start()
|
|
|
|
|
self.handle_app_login()
|
2020-05-06 23:53:25 +08:00
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
return False
|
2020-05-19 22:58:25 +08:00
|
|
|
|
|
|
|
|
def _triggered_app_restart(self):
|
|
|
|
|
"""
|
|
|
|
|
Returns:
|
|
|
|
|
bool: If triggered a restart condition.
|
|
|
|
|
"""
|
|
|
|
|
now = datetime.now()
|
|
|
|
|
if now.date() != self.start_time.date():
|
|
|
|
|
logger.hr('Triggered restart new day')
|
|
|
|
|
return True
|
|
|
|
|
if not self.config.IGNORE_LOW_EMOTION_WARN:
|
|
|
|
|
# The game does not calculate emotion correctly, which is a bug in AzurLane.
|
|
|
|
|
# After a long run, we have to restart the game to update it.
|
2020-05-20 17:58:28 +08:00
|
|
|
if now - self.start_time > timedelta(hours=2):
|
2020-05-19 22:58:25 +08:00
|
|
|
logger.hr('Triggered restart avoid emotion bug')
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
def handle_app_restart(self):
|
|
|
|
|
if self._triggered_app_restart():
|
|
|
|
|
self.app_restart()
|
|
|
|
|
self.start_time = datetime.now()
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
return False
|