From 7b707be8414dc6e5ad86a37da76fc25596647b48 Mon Sep 17 00:00:00 2001 From: YoursFunny Date: Wed, 6 Dec 2023 17:11:50 +0800 Subject: [PATCH] refactor(scrimmage): use stage ap count --- tasks/scrimmage/scrimmage.py | 38 +++++++++++------------------------- tasks/scrimmage/ui.py | 5 ++++- 2 files changed, 15 insertions(+), 28 deletions(-) diff --git a/tasks/scrimmage/scrimmage.py b/tasks/scrimmage/scrimmage.py index cefaf5c..171e75f 100644 --- a/tasks/scrimmage/scrimmage.py +++ b/tasks/scrimmage/scrimmage.py @@ -7,6 +7,7 @@ from tasks.base.assets.assets_base_page import BACK from tasks.base.page import page_school_exchange from tasks.scrimmage.assets.assets_scrimmage import * from tasks.scrimmage.ui import ScrimmageUI +from tasks.stage.ap import AP class ScrimmageStatus(Enum): @@ -18,15 +19,20 @@ class ScrimmageStatus(Enum): FINISH = 5 -class Scrimmage(ScrimmageUI): +class Scrimmage(ScrimmageUI, AP): + _stage_ap = [10, 15, 15, 15] + + @property + def stage_ap(self): + return self._stage_ap + @property def scrimmage_info(self): scrimmage = (SELECT_TRINITY, SELECT_GEHENNA, SELECT_MILLENNIUM) check = (CHECK_TRINITY, CHECK_GEHENNA, CHECK_MILLENNIUM) stage = (self.config.Trinity_Stage, self.config.Gehenna_Stage, self.config.Millennium_Stage) count = (self.config.Trinity_Count, self.config.Gehenna_Count, self.config.Millennium_Count) - ap = (10 if stage == 1 else 15 for stage in stage) - info = zip(scrimmage, check, stage, count, ap) + info = zip(scrimmage, check, stage, count) return filter(lambda x: x[3] > 0, info) @property @@ -50,10 +56,6 @@ class Scrimmage(ScrimmageUI): def is_ticket_enough(self) -> bool: return self.current_ticket >= self.current_count - @property - def is_ap_enough(self) -> bool: - return self.current_ap >= self.current_task_ap - @property def current_scrimmage(self): return self.task[0][:2] @@ -66,25 +68,10 @@ class Scrimmage(ScrimmageUI): def current_count(self): return self.task[0][3] - @property - def current_task_ap(self): - return self.task[0][4] * self.current_count - @property def current_ticket(self): return self.config.stored.ScrimmageTicket.value - @property - def current_ap(self): - return self.config.stored.AP.value - - def update_ap(self): - ap = self.config.stored.AP - ap_old = ap.value - ap_new = ap_old - self.current_task_ap - ap.set(ap_new, ap.total) - logger.info(f'Set AP: {ap_old} -> {ap_new}') - def handle_scrimmage(self, status): match status: case ScrimmageStatus.OCR: @@ -96,19 +83,16 @@ class Scrimmage(ScrimmageUI): if not self.is_ticket_enough: logger.warning('Scrimmage ticket not enough') self.error_handler() - if not self.is_ap_enough: - logger.warning('AP not enough') - self.error_handler() if self.select_scrimmage(*self.current_scrimmage): return ScrimmageStatus.ENTER case ScrimmageStatus.ENTER: - if self.enter_stage(self.current_stage): + if self.enter_stage(self.current_stage) and self.is_ap_enough(self.current_count, self.current_stage): return ScrimmageStatus.SWEEP else: self.error_handler() case ScrimmageStatus.SWEEP: if self.do_sweep(self.current_count): - self.update_ap() + self.update_ap(self.current_count, self.current_stage) self.task.pop(0) return ScrimmageStatus.END return ScrimmageStatus.ENTER diff --git a/tasks/scrimmage/ui.py b/tasks/scrimmage/ui.py index c405fce..badffdd 100644 --- a/tasks/scrimmage/ui.py +++ b/tasks/scrimmage/ui.py @@ -3,6 +3,7 @@ from module.logger import logger from module.ocr.ocr import DigitCounter from tasks.base.ui import UI from tasks.scrimmage.assets.assets_scrimmage import * +from tasks.stage.ap import AP from tasks.stage.list import StageList from tasks.stage.sweep import StageSweep @@ -10,7 +11,7 @@ SCRIMMAGE_LIST = StageList('ScrimmageList') SCRIMMAGE_SWEEP = StageSweep('ScrimmageSweep', 6) -class ScrimmageUI(UI): +class ScrimmageUI(UI, AP): def select_scrimmage(self, dest_enter: ButtonWrapper, dest_check: ButtonWrapper): timer = Timer(5, 10).start() while 1: @@ -24,6 +25,8 @@ class ScrimmageUI(UI): def enter_stage(self, index: int) -> bool: if not index: index = SCRIMMAGE_LIST.insight_max_sweepable_index(self) + # set AP stage + self.set_stage(index) if SCRIMMAGE_LIST.select_index_enter(self, index, insight=False): return True return False