From 352f7412a6f07231dbcae1f435f5daee54ad171b Mon Sep 17 00:00:00 2001 From: sui-feng-cb <2518179942@qq.com> Date: Sat, 7 Feb 2026 03:52:37 +0800 Subject: [PATCH] Fix: try reversed order in project_character_select --- assets/cn/island/ROLE_SORTING_CLICK.png | Bin 0 -> 7317 bytes assets/cn/island/ROLE_SORT_ASC.png | Bin 0 -> 2813 bytes assets/cn/island/ROLE_SORT_DESC.png | Bin 0 -> 2832 bytes module/island/assets.py | 3 +++ module/island/project.py | 19 ++++++++++++++++--- 5 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 assets/cn/island/ROLE_SORTING_CLICK.png create mode 100644 assets/cn/island/ROLE_SORT_ASC.png create mode 100644 assets/cn/island/ROLE_SORT_DESC.png diff --git a/assets/cn/island/ROLE_SORTING_CLICK.png b/assets/cn/island/ROLE_SORTING_CLICK.png new file mode 100644 index 0000000000000000000000000000000000000000..5a478a7a0dc3e35d388c1537b8ec3366ef5d4ced GIT binary patch literal 7317 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 VFKi&~(6>34FS=c*bqM(Le*g~6A$$M; literal 0 HcmV?d00001 diff --git a/assets/cn/island/ROLE_SORT_ASC.png b/assets/cn/island/ROLE_SORT_ASC.png new file mode 100644 index 0000000000000000000000000000000000000000..11eb79f122723219955477454bb2a9aa8f3bfbac GIT binary patch literal 2813 zcmeAS@N?(olHy`uVBq!ia0y~yUz*!-Ar-gYUf;;uV!-1N zI4Qa1O+il24P|8om-3zowtfm+R#F9Wl{Gt2ZyAn)A|kATSn wyYi<8SuG3lvj1{AUyu!E#wbmN5NOc0=3OK3@9gcL>p-S?y85}Sb4q9e0F5;`^8f$< literal 0 HcmV?d00001 diff --git a/module/island/assets.py b/module/island/assets.py index 70640aec0..510efc175 100644 --- a/module/island/assets.py +++ b/module/island/assets.py @@ -36,6 +36,9 @@ PROJECT_UNICORN_CHECK = Button(area={'cn': (1156, 167, 1224, 209), 'en': (1156, PROJECT_YING_SWEI_CHECK = Button(area={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, color={'cn': (171, 157, 165), 'en': (171, 157, 165), 'jp': (171, 157, 165), 'tw': (171, 157, 165)}, button={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, file={'cn': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'en': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'jp': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'tw': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png'}) ROLE_SELECT_CONFIRM = Button(area={'cn': (1068, 597, 1118, 621), 'en': (1068, 597, 1118, 621), 'jp': (1068, 597, 1118, 621), 'tw': (1068, 597, 1118, 621)}, color={'cn': (109, 206, 255), 'en': (125, 211, 255), 'jp': (109, 206, 255), 'tw': (109, 206, 255)}, button={'cn': (948, 585, 1239, 632), 'en': (1068, 597, 1118, 621), 'jp': (948, 585, 1239, 632), 'tw': (948, 585, 1239, 632)}, file={'cn': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'en': './assets/en/island/ROLE_SELECT_CONFIRM.png', 'jp': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'tw': './assets/cn/island/ROLE_SELECT_CONFIRM.png'}) ROLE_SELECT_ENTER = Button(area={'cn': (579, 314, 700, 350), 'en': (578, 313, 701, 351), 'jp': (579, 314, 700, 350), 'tw': (579, 314, 700, 350)}, color={'cn': (239, 238, 237), 'en': (237, 237, 236), 'jp': (239, 238, 237), 'tw': (239, 238, 237)}, button={'cn': (534, 206, 747, 483), 'en': (578, 313, 701, 351), 'jp': (534, 206, 747, 483), 'tw': (534, 206, 747, 483)}, file={'cn': './assets/cn/island/ROLE_SELECT_ENTER.png', 'en': './assets/en/island/ROLE_SELECT_ENTER.png', 'jp': './assets/cn/island/ROLE_SELECT_ENTER.png', 'tw': './assets/cn/island/ROLE_SELECT_ENTER.png'}) +ROLE_SORTING_CLICK = Button(area={'cn': (109, 606, 272, 644), 'en': (109, 606, 272, 644), 'jp': (109, 606, 272, 644), 'tw': (109, 606, 272, 644)}, color={'cn': (101, 102, 101), 'en': (101, 102, 101), 'jp': (101, 102, 101), 'tw': (101, 102, 101)}, button={'cn': (109, 606, 272, 644), 'en': (109, 606, 272, 644), 'jp': (109, 606, 272, 644), 'tw': (109, 606, 272, 644)}, file={'cn': './assets/cn/island/ROLE_SORTING_CLICK.png', 'en': './assets/cn/island/ROLE_SORTING_CLICK.png', 'jp': './assets/cn/island/ROLE_SORTING_CLICK.png', 'tw': './assets/cn/island/ROLE_SORTING_CLICK.png'}) +ROLE_SORT_ASC = Button(area={'cn': (143, 619, 150, 623), 'en': (143, 619, 150, 623), 'jp': (143, 619, 150, 623), 'tw': (143, 619, 150, 623)}, color={'cn': (244, 244, 244), 'en': (244, 244, 244), 'jp': (244, 244, 244), 'tw': (244, 244, 244)}, button={'cn': (143, 619, 150, 623), 'en': (143, 619, 150, 623), 'jp': (143, 619, 150, 623), 'tw': (143, 619, 150, 623)}, file={'cn': './assets/cn/island/ROLE_SORT_ASC.png', 'en': './assets/cn/island/ROLE_SORT_ASC.png', 'jp': './assets/cn/island/ROLE_SORT_ASC.png', 'tw': './assets/cn/island/ROLE_SORT_ASC.png'}) +ROLE_SORT_DESC = Button(area={'cn': (143, 627, 150, 631), 'en': (143, 627, 150, 631), 'jp': (143, 627, 150, 631), 'tw': (143, 627, 150, 631)}, color={'cn': (236, 236, 236), 'en': (236, 236, 236), 'jp': (236, 236, 236), 'tw': (236, 236, 236)}, button={'cn': (143, 627, 150, 631), 'en': (143, 627, 150, 631), 'jp': (143, 627, 150, 631), 'tw': (143, 627, 150, 631)}, file={'cn': './assets/cn/island/ROLE_SORT_DESC.png', 'en': './assets/cn/island/ROLE_SORT_DESC.png', 'jp': './assets/cn/island/ROLE_SORT_DESC.png', 'tw': './assets/cn/island/ROLE_SORT_DESC.png'}) TEMPLATE_AKASHI = Template(file={'cn': './assets/cn/island/TEMPLATE_AKASHI.png', 'en': './assets/cn/island/TEMPLATE_AKASHI.png', 'jp': './assets/cn/island/TEMPLATE_AKASHI.png', 'tw': './assets/cn/island/TEMPLATE_AKASHI.png'}) TEMPLATE_AMAGI_CHAN = Template(file={'cn': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'en': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'jp': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'tw': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png'}) TEMPLATE_CARROT = Template(file={'cn': './assets/cn/island/TEMPLATE_CARROT.png', 'en': './assets/cn/island/TEMPLATE_CARROT.png', 'jp': './assets/cn/island/TEMPLATE_CARROT.png', 'tw': './assets/cn/island/TEMPLATE_CARROT.png'}) diff --git a/module/island/project.py b/module/island/project.py index 21585e186..b6071c572 100644 --- a/module/island/project.py +++ b/module/island/project.py @@ -16,6 +16,12 @@ from module.island.ui import IslandUI from module.logger import logger from module.map.map_grids import SelectedGrids from module.ocr.ocr import Duration, Ocr +from module.ui.switch import Switch + + +ROLE_SORTING = Switch('Role_sorting') +ROLE_SORTING.add_state('Ascending', check_button=ROLE_SORT_ASC, click_button=ROLE_SORTING_CLICK) +ROLE_SORTING.add_state('Descending', check_button=ROLE_SORT_DESC, click_button=ROLE_SORTING_CLICK) class ProjectNameOcr(Ocr): @@ -465,7 +471,8 @@ class IslandProjectRun(IslandUI): bool: if selected """ logger.info('Island select role') - timeout = Timer(1.5, count=3).start() + ROLE_SORTING.set('Descending', main=self) + timeout = Timer(5, count=3).start() count = 0 while 1: if skip_first_screenshot: @@ -484,8 +491,14 @@ class IslandProjectRun(IslandUI): return self._project_character_select(click_button, check_button) else: name = ' '.join(map(lambda x: x.capitalize(), character.split('_'))) - logger.info(f'No character {name} found') - if count >= 2: + # retry 2 times for character select + if 1 <= count < 3: + logger.info(f'No character {name} was found, try reversed order') + ROLE_SORTING.set('Ascending', main=self) + # select manjuu after 4 trials + elif count >= 3: + logger.info(f'No character {name} was found, use manjuu') + ROLE_SORTING.set('Ascending', main=self) character = 'manjuu' count += 1 continue