1
0
mirror of https://github.com/0O0o0oOoO00/Alas.git synced 2026-05-16 19:59:28 +08:00
Files
Alas/module/gg_handler/gg_handler.py

256 lines
9.6 KiB
Python
Raw Normal View History

2023-01-17 10:14:09 +08:00
from module.logger import logger
from module.gg_handler.assets import *
2023-01-19 01:45:56 +08:00
from module.gg_handler.gg_data import gg_data
2023-01-17 10:14:09 +08:00
from module.base.base import ModuleBase as base
2023-01-19 09:37:57 +08:00
2023-01-17 11:46:36 +08:00
class gg_handler(base):
2023-01-19 09:37:57 +08:00
def __init__(self, config, device, switch=True, factor=200):
self.s = switch
self.f = factor
self.device = device
self.config = config
2023-01-17 10:14:09 +08:00
2023-01-24 04:46:32 +08:00
def skip_error(self):
2023-01-17 10:14:09 +08:00
"""
Page:
in: Game down error
out: restart
"""
2023-01-20 19:09:26 +08:00
skip_first_screenshot = False
2023-01-24 04:46:32 +08:00
count=0
2023-01-21 17:18:17 +08:00
for i in range(10):
2023-01-20 19:09:26 +08:00
skipped = 0
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.sleep(0.3)
self.device.screenshot()
2023-01-21 17:18:17 +08:00
if base.appear(self, BUTTON_GG_RESTART_ERROR, offset=(50, 50)):
2023-01-20 19:09:26 +08:00
logger.hr('Game died with GG panel')
2023-01-21 17:18:17 +08:00
logger.info('Close GG restart error')
2023-01-20 19:09:26 +08:00
self.device.click(BUTTON_GG_RESTART_ERROR)
skipped = 1
2023-01-24 04:46:32 +08:00
count += 1
if count>=2: break
2023-01-20 19:09:26 +08:00
skip_first_screenshot = False
while 1:
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.sleep(0.3)
self.device.screenshot()
2023-01-21 17:18:17 +08:00
if base.appear(self, BUTTON_GG_RESTART_ERROR, offset=(50, 50)):
logger.hr('Game died with GG panel')
logger.info('Close GG restart error')
2023-01-20 19:09:26 +08:00
skipped = 1
2023-01-21 17:18:17 +08:00
self.device.click(BUTTON_GG_RESTART_ERROR)
elif base.appear(self, BUTTON_GG_SCRIPT_END, offset=(50, 50)):
2023-01-20 19:09:26 +08:00
logger.info('Close previous script')
skipped = 1
self.device.click(BUTTON_GG_SCRIPT_END)
2023-01-21 17:18:17 +08:00
elif base.appear(self, BUTTON_GG_SCRIPT_FATAL, offset=(50, 50)):
2023-01-20 19:09:26 +08:00
logger.info('Restart previous script')
skipped = 1
self.device.click(BUTTON_GG_SCRIPT_FATAL)
2023-01-21 17:18:17 +08:00
elif base.appear(self, BUTTON_GG_APP_CHOOSE, offset=(150, 500)):
2023-01-20 19:09:26 +08:00
logger.info('APP choose')
skipped = 1
self.device.click(BUTTON_GG_APP_CHOOSE)
2023-01-21 17:18:17 +08:00
elif base.appear(self, BUTTON_GG_SCRIPT_MENU_A, offset=(50, 50)):
2023-01-20 19:09:26 +08:00
skipped = 1
logger.info('Close previous script')
self.device.click(BUTTON_GG_EXIT_POS)
2023-01-21 17:18:17 +08:00
elif not base.appear(self, BUTTON_GG_CONFIRM, offset=(50, 50)):
logger.hr('GG Panel Disappearance Confirmed')
break
elif base.appear(self, BUTTON_GG_SEARCH_MODE_CONFIRM, offset=(10, 10), threshold=0.999):
logger.info('At GG main panel, click GG exit')
skipped = 1
self.device.click(BUTTON_GG_EXIT_POS)
elif base.appear(self, BUTTON_GG_CONFIRM, offset=(50, 50)) and \
not base.appear(self, BUTTON_GG_CONFIRM, offset=10):
2023-01-20 19:09:26 +08:00
self.device.click(BUTTON_GG_TAB_SEARCH_POS)
skipped = 1
logger.info('Enter search mode')
2023-01-21 17:18:17 +08:00
elif base.appear(self, BUTTON_GG_CONFIRM, offset=10):
logger.info('Unexpected GG page, Try GG exit')
self.device.click(BUTTON_GG_EXIT_POS)
skipped = 1
2023-01-20 19:09:26 +08:00
return skipped
2023-01-17 10:14:09 +08:00
def _enter_gg(self):
2023-01-20 19:09:26 +08:00
"""
2023-01-17 10:14:09 +08:00
Page:
in: any
out: any GG
2023-01-20 19:09:26 +08:00
"""
2023-01-17 10:14:09 +08:00
self.device.click(BUTTON_GG_ENTER_POS)
2023-01-19 09:37:57 +08:00
skip_first_screenshot = False
2023-01-17 10:14:09 +08:00
while 1:
if skip_first_screenshot:
skip_first_screenshot = False
else:
2023-01-20 19:09:26 +08:00
self.device.sleep(0.3)
2023-01-17 10:14:09 +08:00
self.device.screenshot()
2023-01-21 17:18:17 +08:00
if base.appear(self, BUTTON_GG_CONFIRM, offset=(50, 50)):
2023-01-17 10:14:09 +08:00
logger.info('Entered GG')
break
self.device.click(BUTTON_GG_ENTER_POS)
2023-01-20 19:09:26 +08:00
skip_first_screenshot = False
while 1:
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.sleep(0.3)
self.device.screenshot()
2023-01-21 17:18:17 +08:00
if not base.appear(self, BUTTON_GG_APP_CHOOSE, offset=(150, 500)):
2023-01-20 19:09:26 +08:00
from module.ui.assets import BACK_ARROW
self.device.click(BACK_ARROW)
logger.info('Actually APP choosing button')
else:
2023-01-21 17:18:17 +08:00
base.appear_then_click(self, BUTTON_GG_APP_CHOOSE, offset=(150, 500))
2023-01-20 19:09:26 +08:00
logger.info('APP Choose')
break
2023-01-19 09:37:57 +08:00
2023-01-17 10:14:09 +08:00
def _gg_enter_script(self):
"""
Page:
in: any GG
out: GG ready to start script
"""
2023-01-20 19:09:26 +08:00
skip_first_screenshot = False
2023-01-17 10:14:09 +08:00
while 1:
2023-01-20 19:09:26 +08:00
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.sleep(0.5)
self.device.screenshot()
2023-01-21 17:18:17 +08:00
if base.appear(self, BUTTON_GG_SCRIPT_ENTER_CONFIRM, offset=(50, 50)):
2023-01-17 10:14:09 +08:00
logger.info('GG script ready to start')
break
2023-01-21 17:18:17 +08:00
elif base.appear(self, BUTTON_GG_SCRIPT_END, offset=(50, 50)):
2023-01-17 10:14:09 +08:00
logger.info('Close previous script')
2023-01-19 09:37:57 +08:00
self.device.click(BUTTON_GG_SCRIPT_END)
2023-01-21 17:18:17 +08:00
elif base.appear(self, BUTTON_GG_SCRIPT_FATAL, offset=(50, 50)):
2023-01-17 10:14:09 +08:00
logger.info('Stop previous script')
2023-01-19 09:37:57 +08:00
self.device.click(BUTTON_GG_SCRIPT_FATAL)
2023-01-21 17:18:17 +08:00
elif base.appear(self, BUTTON_GG_APP_CHOOSE, offset=(150, 500)):
2023-01-17 10:14:09 +08:00
logger.info('APP choose')
2023-01-19 09:37:57 +08:00
self.device.click(BUTTON_GG_APP_CHOOSE)
2023-01-21 17:18:17 +08:00
elif base.appear(self, BUTTON_GG_SEARCH_MODE_CONFIRM, offset=(10, 10), threshold=0.95):
2023-01-19 09:37:57 +08:00
self.device.click(BUTTON_GG_SCRIPT_ENTER_POS)
logger.info('Enter script choose')
2023-01-17 10:14:09 +08:00
else:
self.device.click(BUTTON_GG_TAB_SEARCH_POS)
2023-01-19 09:37:57 +08:00
logger.info('Enter search mode')
2023-01-20 19:09:26 +08:00
skip_first_screenshot = False
2023-01-17 11:46:36 +08:00
while 1:
2023-01-20 19:09:26 +08:00
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.sleep(0.5)
self.device.screenshot()
2023-01-21 17:18:17 +08:00
if base.appear(self, BUTTON_GG_SCRIPT_START, offset=(50, 50)):
2023-01-19 09:37:57 +08:00
self.device.click(BUTTON_GG_SCRIPT_START)
2023-01-17 11:46:36 +08:00
return 1
2023-01-20 19:09:26 +08:00
def _gg_mode(self):
2023-01-17 10:14:09 +08:00
"""
Page:
in: GG Script Menu
out: GG GG input panel
"""
2023-01-20 19:09:26 +08:00
skip_first_screenshot = False
2023-01-17 10:14:09 +08:00
while 1:
2023-01-20 19:09:26 +08:00
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.sleep(0.5)
self.device.screenshot()
2023-01-21 17:18:17 +08:00
if base.appear(self, BUTTON_GG_SCRIPT_MENU_A, offset=(50, 50), threshold=0.8):
2023-01-19 09:37:57 +08:00
method = [BUTTON_GG_SCRIPT_MENU_B, BUTTON_GG_SCRIPT_MENU_A]
self.device.click(method[int(self.s)])
2023-01-17 11:46:36 +08:00
break
2023-01-17 10:14:09 +08:00
def _gg_handle_factor(self):
2023-01-17 10:14:09 +08:00
"""
Page:
in: GG input panel
out:factor set(Not ensured yet)
"""
2023-01-20 19:09:26 +08:00
base.wait_until_appear(self, BUTTON_GG_SCRIPT_START_PROCESS, skip_first_screenshot=True)
logger.info(f'Factor={self.f}')
2023-01-19 09:37:57 +08:00
if self.f == 200:
2023-01-17 11:46:36 +08:00
logger.info('Skip factor input')
return 0
2023-01-20 19:09:26 +08:00
method = [
2023-01-17 10:14:09 +08:00
BUTTON_GG_SCRIPT_PANEL_NUM0,
BUTTON_GG_SCRIPT_PANEL_NUM1,
BUTTON_GG_SCRIPT_PANEL_NUM2,
BUTTON_GG_SCRIPT_PANEL_NUM3,
BUTTON_GG_SCRIPT_PANEL_NUM4,
BUTTON_GG_SCRIPT_PANEL_NUM5,
BUTTON_GG_SCRIPT_PANEL_NUM6,
BUTTON_GG_SCRIPT_PANEL_NUM7,
BUTTON_GG_SCRIPT_PANEL_NUM8,
BUTTON_GG_SCRIPT_PANEL_NUM9,
]
for i in str(self.f):
2023-01-21 17:18:17 +08:00
base.appear_then_click(self, method[int(i)], offset=(50, 50))
2023-01-17 11:46:36 +08:00
self.device.sleep(0.5)
logger.info('Input success')
2023-01-17 10:14:09 +08:00
def _gg_script_run(self):
"""
Page:
in: GG factor set
out: GG Menu
"""
2023-01-20 19:09:26 +08:00
skip_first_screenshot = False
2023-01-17 11:46:36 +08:00
while 1:
2023-01-20 19:09:26 +08:00
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.sleep(0.5)
self.device.screenshot()
2023-01-21 17:18:17 +08:00
if base.appear_then_click(self, BUTTON_GG_SCRIPT_START_PROCESS, offset=(50, 50), threshold=0.9):
2023-01-17 11:46:36 +08:00
break
logger.info('Waiting for end')
2023-01-20 19:09:26 +08:00
skip_first_screenshot = False
2023-01-17 11:46:36 +08:00
while 1:
2023-01-20 19:09:26 +08:00
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.sleep(0.5)
self.device.screenshot()
2023-01-21 17:18:17 +08:00
if base.appear_then_click(self, BUTTON_GG_SCRIPT_END, offset=(50, 50), threshold=0.9):
2023-01-17 11:46:36 +08:00
return 1
2023-01-17 10:14:09 +08:00
2023-01-21 17:18:17 +08:00
# def _gg_exit(self):
# self.device.click(BUTTON_GG_EXIT_POS)
# skip_first_screenshot = False
# while 1:
# if skip_first_screenshot:
# skip_first_screenshot = False
# else:
# self.device.sleep(0.5)
# self.device.screenshot()
# if not base.appear(self, BUTTON_GG_CONFIRM, offset=(10,10)):
# logger.hr('GG Panel Exited')
# return 1
# self.device.click(BUTTON_GG_EXIT_POS)
# logger.info('Click GG exit')
2023-01-17 10:14:09 +08:00
def gg_run(self):
2023-01-17 10:14:09 +08:00
self._enter_gg()
self._gg_enter_script()
self._gg_mode()
self._gg_handle_factor()
2023-01-17 10:14:09 +08:00
self._gg_script_run()
2023-01-19 09:37:57 +08:00
gg_data(self.config, target='gg_on', value=self.s).set_data()
2023-01-24 04:46:32 +08:00
self.skip_error()
logger.attr('GG', 'Enabled')