From f80cdaca81ef26b1ccdcb066e111318f622565de Mon Sep 17 00:00:00 2001 From: KUAI Date: Mon, 27 Apr 2026 22:22:28 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E9=87=8D=E7=BD=AE=E5=86=B3=E6=88=98?= =?UTF-8?q?=E6=97=B6=E9=81=87=E5=88=B0=E8=A7=A3=E8=A3=85=E5=8D=A1=E4=BD=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- autowsgr/ops/decisive/handlers.py | 6 +++++- autowsgr/ui/decisive/battle_page.py | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/autowsgr/ops/decisive/handlers.py b/autowsgr/ops/decisive/handlers.py index b307f446..eda8da7f 100644 --- a/autowsgr/ops/decisive/handlers.py +++ b/autowsgr/ops/decisive/handlers.py @@ -122,7 +122,11 @@ def _handle_enter_map(self) -> None: if entry_status == DecisiveEntryStatus.REFRESH: _log.info('[决战] 检测到「重置关卡」状态,执行章节重置') - self._battle_page.reset_chapter() + reset_success = self._battle_page.reset_chapter() + if not reset_success: + # 重置不成功是因为需要解装 + self._state.phase = DecisivePhase.DOCK_FULL + return # 重置后重新检测入口状态 entry_status = self._battle_page.detect_entry_status() diff --git a/autowsgr/ui/decisive/battle_page.py b/autowsgr/ui/decisive/battle_page.py index 71fbc780..edec5d09 100644 --- a/autowsgr/ui/decisive/battle_page.py +++ b/autowsgr/ui/decisive/battle_page.py @@ -18,8 +18,9 @@ import time from typing import TYPE_CHECKING +from autowsgr.image_resources import Templates from autowsgr.infra.logger import get_logger -from autowsgr.types import DecisiveEntryStatus, PageName +from autowsgr.types import DecisiveEntryStatus, DecisivePhase, PageName from autowsgr.ui.utils import click_and_wait_for_page, confirm_operation from autowsgr.vision import ( Color, @@ -409,7 +410,7 @@ def detect_entry_status( # ── 章节重置 ───────────────────────────────────────────────────────── - def reset_chapter(self) -> None: + def reset_chapter(self) -> bool: """使用磁盘重置当前章节。 在决战总览页点击"重置关卡"按钮并确认操作。 @@ -423,6 +424,15 @@ def reset_chapter(self) -> None: _log.info('[决战] 决战页面 → 重置关卡') self._ctrl.click(*CLICK_RESET_CHAPTER) time.sleep(1.0) + screen = self._ctrl.screenshot() + if ImageChecker.template_exists( + screen, + Templates.Build.SHIP_FULL_DEPOT, + confidence=0.8, + ): + _log.warning('[决战] 重置关卡时检测到船坞已满') + return False confirm_operation(self._ctrl, must_confirm=True, timeout=5.0) time.sleep(1.0) # 防止后续 stage 识别出问题 _log.info('[决战] 决战关卡重置完成') + return True From b08ad1a7a68aad0dae8f09384fc43f9fcd7043e0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 14:24:54 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- autowsgr/ops/decisive/handlers.py | 6 +++--- autowsgr/ui/decisive/battle_page.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/autowsgr/ops/decisive/handlers.py b/autowsgr/ops/decisive/handlers.py index eda8da7f..738f280c 100644 --- a/autowsgr/ops/decisive/handlers.py +++ b/autowsgr/ops/decisive/handlers.py @@ -124,9 +124,9 @@ def _handle_enter_map(self) -> None: _log.info('[决战] 检测到「重置关卡」状态,执行章节重置') reset_success = self._battle_page.reset_chapter() if not reset_success: - # 重置不成功是因为需要解装 - self._state.phase = DecisivePhase.DOCK_FULL - return + # 重置不成功是因为需要解装 + self._state.phase = DecisivePhase.DOCK_FULL + return # 重置后重新检测入口状态 entry_status = self._battle_page.detect_entry_status() diff --git a/autowsgr/ui/decisive/battle_page.py b/autowsgr/ui/decisive/battle_page.py index edec5d09..4c7c6f7b 100644 --- a/autowsgr/ui/decisive/battle_page.py +++ b/autowsgr/ui/decisive/battle_page.py @@ -20,7 +20,7 @@ from autowsgr.image_resources import Templates from autowsgr.infra.logger import get_logger -from autowsgr.types import DecisiveEntryStatus, DecisivePhase, PageName +from autowsgr.types import DecisiveEntryStatus, PageName from autowsgr.ui.utils import click_and_wait_for_page, confirm_operation from autowsgr.vision import ( Color,