Fix: Assignments missing groups (#89)

This commit is contained in:
Zebartin 2023-09-12 18:36:24 +08:00 committed by GitHub
parent 50f49a6350
commit 0a32329664
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 4 deletions

View File

@ -159,6 +159,7 @@ class DraggableList:
return False return False
logger.info(f'Insight row: {row}, index={row_index}') logger.info(f'Insight row: {row}, index={row_index}')
last_buttons: set[OcrResultButton] = None
while 1: while 1:
if skip_first_screenshot: if skip_first_screenshot:
skip_first_screenshot = False skip_first_screenshot = False
@ -181,6 +182,10 @@ class DraggableList:
main.wait_until_stable(self.search_button, timer=Timer( main.wait_until_stable(self.search_button, timer=Timer(
0, count=0), timeout=Timer(1.5, count=5)) 0, count=0), timeout=Timer(1.5, count=5))
skip_first_screenshot = True skip_first_screenshot = True
if last_buttons == set(self.cur_buttons):
logger.warning(f'No more rows in {self}')
return False
last_buttons = set(self.cur_buttons)
return True return True

View File

@ -20,6 +20,8 @@ KEYWORDS_ASSIGNMENT_GROUP.Synthesis_Materials.entries = (
KEYWORDS_ASSIGNMENT_ENTRY.Spring_of_Life, KEYWORDS_ASSIGNMENT_ENTRY.Spring_of_Life,
KEYWORDS_ASSIGNMENT_ENTRY.The_Land_of_Gold, KEYWORDS_ASSIGNMENT_ENTRY.The_Land_of_Gold,
KEYWORDS_ASSIGNMENT_ENTRY.The_Blossom_in_the_Storm, KEYWORDS_ASSIGNMENT_ENTRY.The_Blossom_in_the_Storm,
KEYWORDS_ASSIGNMENT_ENTRY.Legend_of_the_Puppet_Master,
KEYWORDS_ASSIGNMENT_ENTRY.The_Wages_of_Humanity,
) )
for group in ( for group in (
KEYWORDS_ASSIGNMENT_GROUP.Character_Materials, KEYWORDS_ASSIGNMENT_GROUP.Character_Materials,
@ -27,4 +29,5 @@ for group in (
KEYWORDS_ASSIGNMENT_GROUP.Synthesis_Materials, KEYWORDS_ASSIGNMENT_GROUP.Synthesis_Materials,
): ):
for entry in group.entries: for entry in group.entries:
assert entry.group is None
entry.group = group entry.group = group

View File

@ -4,6 +4,7 @@ from typing import Iterator
from module.base.base import ModuleBase from module.base.base import ModuleBase
from module.base.timer import Timer from module.base.timer import Timer
from module.exception import ScriptError
from module.logger import logger from module.logger import logger
from module.ocr.ocr import DigitCounter, Ocr from module.ocr.ocr import DigitCounter, Ocr
from module.ui.draggable_list import DraggableList from module.ui.draggable_list import DraggableList
@ -37,12 +38,13 @@ class AssignmentSwitch(Switch):
class AssignmentOcr(Ocr): class AssignmentOcr(Ocr):
OCR_REPLACE = { OCR_REPLACE = {
'ch': [ 'cn': [
(KEYWORDS_ASSIGNMENT_ENTRY.Winter_Soldiers.name, '[黑]冬的战士们'), (KEYWORDS_ASSIGNMENT_ENTRY.Winter_Soldiers.name, '[黑]冬的战士们'),
(KEYWORDS_ASSIGNMENT_ENTRY.Born_to_Obey.name, '[牛]而服从'), (KEYWORDS_ASSIGNMENT_ENTRY.Born_to_Obey.name, '[牛]而服从'),
(KEYWORDS_ASSIGNMENT_ENTRY.Root_Out_the_Turpitude.name, (KEYWORDS_ASSIGNMENT_ENTRY.Root_Out_the_Turpitude.name,
'根除恶[擎薯尊掌鞋]?'), '根除恶[擎薯尊掌鞋]?'),
(KEYWORDS_ASSIGNMENT_ENTRY.Akashic_Records.name, '阿[未][夏复]记录'), (KEYWORDS_ASSIGNMENT_ENTRY.Akashic_Records.name, '阿[未][夏复]记录'),
(KEYWORDS_ASSIGNMENT_ENTRY.Legend_of_the_Puppet_Master.name, '^师传说'),
(KEYWORDS_ASSIGNMENT_ENTRY.The_Wages_of_Humanity.name, '[赠]养人类'), (KEYWORDS_ASSIGNMENT_ENTRY.The_Wages_of_Humanity.name, '[赠]养人类'),
] ]
} }
@ -121,8 +123,17 @@ class AssignmentUI(UI):
self.device.screenshot() self.device.screenshot()
self.goto_entry(KEYWORDS_ASSIGNMENT_ENTRY.Nameless_Land_Nameless_People) self.goto_entry(KEYWORDS_ASSIGNMENT_ENTRY.Nameless_Land_Nameless_People)
""" """
self.goto_group(entry.group) if entry.group is None:
ASSIGNMENT_ENTRY_LIST.select_row(entry, self) err_msg = f'{entry} is not in any group, please inform developers if possible'
logger.warning(err_msg)
for group in self._iter_groups():
self.goto_group(group)
if ASSIGNMENT_ENTRY_LIST.select_row(entry, self):
return
raise ScriptError(err_msg)
else:
self.goto_group(entry.group)
ASSIGNMENT_ENTRY_LIST.select_row(entry, self)
def _wait_until_entry_loaded(self): def _wait_until_entry_loaded(self):
skip_first_screenshot = True skip_first_screenshot = True
@ -144,7 +155,8 @@ class AssignmentUI(UI):
@property @property
def _limit_status(self) -> tuple[int, int, int]: def _limit_status(self) -> tuple[int, int, int]:
self.device.screenshot() self.device.screenshot()
current, remain, total = DigitCounter(OCR_ASSIGNMENT_LIMIT).ocr_single_line(self.device.image) current, remain, total = DigitCounter(
OCR_ASSIGNMENT_LIMIT).ocr_single_line(self.device.image)
if total and current <= total: if total and current <= total:
logger.attr('Assignment', f'{current}/{total}') logger.attr('Assignment', f'{current}/{total}')
self.config.stored.Assignment.set(current, total) self.config.stored.Assignment.set(current, total)