mirror of
https://github.com/LmeSzinc/StarRailCopilot.git
synced 2024-11-16 14:31:16 +00:00
64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
from module.base.timer import Timer
|
|
from module.logger import logger
|
|
from tasks.dungeon.keywords import KEYWORDS_DUNGEON_LIST
|
|
from tasks.forgotten_hall.keywords import KEYWORDS_FORGOTTEN_HALL_STAGE
|
|
from tasks.forgotten_hall.ui import ForgottenHallUI
|
|
from tasks.map.control.joystick import MapControlJoystick
|
|
|
|
|
|
class UseTechniqueUI(MapControlJoystick, ForgottenHallUI):
|
|
|
|
def _use_technique(self, count: int, skip_first_screenshot=True):
|
|
remains = self.map_get_technique_points()
|
|
if count > remains:
|
|
logger.warning(f"Try to use technique {count} times but only have {remains}")
|
|
return
|
|
|
|
# Handle technique animation when it's being used
|
|
# INFO │ Click ( 900, 600) @ E_BUTTON
|
|
# INFO │ [TechniquePoints] 4
|
|
# INFO │ [TechniquePoints] 3
|
|
# INFO │ [TechniquePoints] 4
|
|
# INFO │ [TechniquePoints] 3
|
|
# INFO │ [TechniquePoints] 3
|
|
confirm = Timer(0.5, count=2).start()
|
|
while 1:
|
|
if skip_first_screenshot:
|
|
skip_first_screenshot = False
|
|
else:
|
|
self.device.screenshot()
|
|
|
|
remains_after = self.map_get_technique_points()
|
|
if remains - remains_after >= count:
|
|
if confirm.reached():
|
|
logger.info(f"{remains - remains_after} techniques used")
|
|
break
|
|
else:
|
|
confirm.reset()
|
|
|
|
self.handle_map_E()
|
|
|
|
def use_technique(self, count: int = 2, skip_first_screenshot=True):
|
|
"""
|
|
Args:
|
|
skip_first_screenshot:
|
|
count: use {count} times
|
|
|
|
Examples:
|
|
self = UseTechniquesUI('alas')
|
|
self.device.screenshot()
|
|
self.use_techniques(2)
|
|
|
|
Pages:
|
|
in: Any
|
|
out: page_forgotten_hall, FORGOTTEN_HALL_CHECKED
|
|
"""
|
|
logger.hr('Use techniques', level=2)
|
|
self.stage_goto(KEYWORDS_DUNGEON_LIST.The_Last_Vestiges_of_Towering_Citadel,
|
|
KEYWORDS_FORGOTTEN_HALL_STAGE.Stage_1)
|
|
self._choose_first_character()
|
|
self._enter_forgotten_hall_dungeon()
|
|
self._use_technique(count, skip_first_screenshot=skip_first_screenshot)
|
|
self.exit_dungeon()
|
|
self.ui_goto_main()
|