From bea794386cf02056c0630850187a4664be808f5f Mon Sep 17 00:00:00 2001 From: YoursFunny Date: Fri, 3 Nov 2023 21:50:08 +0800 Subject: [PATCH] feat: add support for second cafe --- assets/jp/cafe/CAFE_FIRST.png | Bin 0 -> 5772 bytes assets/jp/cafe/CAFE_SECOND.png | Bin 0 -> 5935 bytes assets/jp/cafe/CHANGE_CAFE_NOT_SELECTED.png | Bin 0 -> 7327 bytes assets/jp/cafe/CHANGE_CAFE_SELECTED.png | Bin 0 -> 7798 bytes config/template.json | 3 +- module/config/argument/args.json | 4 ++ module/config/argument/argument.yaml | 1 + module/config/config_generated.py | 1 + module/config/i18n/en-US.json | 4 ++ module/config/i18n/zh-CN.json | 4 ++ tasks/cafe/assets/assets_cafe.py | 56 +++++++++++++++++--- tasks/cafe/cafe.py | 46 ++++++++++++++-- 12 files changed, 107 insertions(+), 12 deletions(-) create mode 100644 assets/jp/cafe/CAFE_FIRST.png create mode 100644 assets/jp/cafe/CAFE_SECOND.png create mode 100644 assets/jp/cafe/CHANGE_CAFE_NOT_SELECTED.png create mode 100644 assets/jp/cafe/CHANGE_CAFE_SELECTED.png diff --git a/assets/jp/cafe/CAFE_FIRST.png b/assets/jp/cafe/CAFE_FIRST.png new file mode 100644 index 0000000000000000000000000000000000000000..a57fd7155b356a61705b14219ecfa3a95d2b7e57 GIT binary patch literal 5772 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 literal 0 HcmV?d00001 diff --git a/assets/jp/cafe/CAFE_SECOND.png b/assets/jp/cafe/CAFE_SECOND.png new file mode 100644 index 0000000000000000000000000000000000000000..34bfc7b635788b7789010ae51593ebef915b0b2c GIT binary patch literal 5935 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 v!Ey| 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 literal 0 HcmV?d00001 diff --git a/assets/jp/cafe/CHANGE_CAFE_SELECTED.png b/assets/jp/cafe/CHANGE_CAFE_SELECTED.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5b18584662c531969395df176034b4eb7aa3a9 GIT binary patch literal 7798 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 literal 0 HcmV?d00001 diff --git a/config/template.json b/config/template.json index 30f79a1..138db4a 100644 --- a/config/template.json +++ b/config/template.json @@ -43,7 +43,8 @@ "Cafe": { "Reward": true, "Touch": true, - "AutoAdjust": true + "AutoAdjust": true, + "SecondCafe": true } }, "Mail": { diff --git a/module/config/argument/args.json b/module/config/argument/args.json index 1c2b99b..ebca4d7 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -194,6 +194,10 @@ "AutoAdjust": { "type": "checkbox", "value": true + }, + "SecondCafe": { + "type": "checkbox", + "value": true } } }, diff --git a/module/config/argument/argument.yaml b/module/config/argument/argument.yaml index 2274f3e..61eca1d 100644 --- a/module/config/argument/argument.yaml +++ b/module/config/argument/argument.yaml @@ -79,6 +79,7 @@ Cafe: Reward: true Touch: true AutoAdjust: true + SecondCafe: true TacticalChallenge: PlayerSelect: diff --git a/module/config/config_generated.py b/module/config/config_generated.py index 26caec6..6ab8b9d 100644 --- a/module/config/config_generated.py +++ b/module/config/config_generated.py @@ -43,6 +43,7 @@ class GeneratedConfig: Cafe_Reward = True Cafe_Touch = True Cafe_AutoAdjust = True + Cafe_SecondCafe = True # Group `TacticalChallenge` TacticalChallenge_PlayerSelect = 0 # 0, 1, 2, 3 diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index ed879ed..303c133 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -201,6 +201,10 @@ "AutoAdjust": { "name": "Cafe.AutoAdjust.name", "help": "Cafe.AutoAdjust.help" + }, + "SecondCafe": { + "name": "Cafe.SecondCafe.name", + "help": "Cafe.SecondCafe.help" } }, "TacticalChallenge": { diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index 665898e..254e97c 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -201,6 +201,10 @@ "AutoAdjust": { "name": "自动调整界面", "help": "在进行学生互动点击前对咖啡馆界面进行缩放和位置调整,以增加互动成功率" + }, + "SecondCafe": { + "name": "第二咖啡厅", + "help": "自动切换第二咖啡厅进行互动点击" } }, "TacticalChallenge": { diff --git a/tasks/cafe/assets/assets_cafe.py b/tasks/cafe/assets/assets_cafe.py index 9a11e35..11220ae 100644 --- a/tasks/cafe/assets/assets_cafe.py +++ b/tasks/cafe/assets/assets_cafe.py @@ -13,6 +13,46 @@ BOX_CAFE = ButtonWrapper( button=(33, 130, 1247, 569), ), ) +CAFE_FIRST = ButtonWrapper( + name='CAFE_FIRST', + jp=Button( + file='./assets/jp/cafe/CAFE_FIRST.png', + area=(82, 152, 136, 175), + search=(62, 132, 156, 195), + color=(111, 127, 147), + button=(82, 152, 136, 175), + ), +) +CAFE_SECOND = ButtonWrapper( + name='CAFE_SECOND', + jp=Button( + file='./assets/jp/cafe/CAFE_SECOND.png', + area=(219, 152, 279, 175), + search=(199, 132, 299, 195), + color=(110, 126, 146), + button=(219, 152, 279, 175), + ), +) +CHANGE_CAFE_NOT_SELECTED = ButtonWrapper( + name='CHANGE_CAFE_NOT_SELECTED', + jp=Button( + file='./assets/jp/cafe/CHANGE_CAFE_NOT_SELECTED.png', + area=(84, 89, 178, 109), + search=(64, 69, 198, 129), + color=(185, 193, 203), + button=(84, 89, 178, 109), + ), +) +CHANGE_CAFE_SELECTED = ButtonWrapper( + name='CHANGE_CAFE_SELECTED', + jp=Button( + file='./assets/jp/cafe/CHANGE_CAFE_SELECTED.png', + area=(40, 87, 191, 112), + search=(20, 67, 211, 132), + color=(82, 105, 130), + button=(40, 87, 191, 112), + ), +) CHECK_REWARD = ButtonWrapper( name='CHECK_REWARD', jp=Button( @@ -47,20 +87,20 @@ GET_REWARD_CLOSE = ButtonWrapper( name='GET_REWARD_CLOSE', jp=Button( file='./assets/jp/cafe/GET_REWARD_CLOSE.png', - area=(891, 144, 917, 170), - search=(871, 124, 937, 190), - color=(173, 179, 189), - button=(891, 144, 917, 170), + area=(970, 134, 996, 160), + search=(950, 114, 1016, 180), + color=(172, 179, 188), + button=(970, 134, 996, 160), ), ) GOT_REWARD = ButtonWrapper( name='GOT_REWARD', jp=Button( file='./assets/jp/cafe/GOT_REWARD.png', - area=(609, 507, 672, 535), - search=(589, 487, 692, 555), - color=(174, 175, 174), - button=(609, 507, 672, 535), + area=(561, 501, 718, 556), + search=(541, 481, 738, 576), + color=(209, 210, 209), + button=(561, 501, 718, 556), ), ) OCR_CAFE = ButtonWrapper( diff --git a/tasks/cafe/cafe.py b/tasks/cafe/cafe.py index 1776827..669cf92 100644 --- a/tasks/cafe/cafe.py +++ b/tasks/cafe/cafe.py @@ -7,11 +7,21 @@ from module.base.timer import Timer from module.base.button import ClickButton from module.base.utils.utils import area_offset from module.ocr.ocr import Digit +from module.ui.switch import Switch from tasks.base.page import page_cafe from tasks.base.ui import UI from tasks.cafe.assets.assets_cafe import * +SWITCH_CAFE = Switch('Cafe_switch') +SWITCH_CAFE.add_state('off', CHANGE_CAFE_NOT_SELECTED) +SWITCH_CAFE.add_state('on', CHANGE_CAFE_SELECTED) + +SWITCH_CAFE_SELECT = Switch('Cafe_switch_select') +SWITCH_CAFE_SELECT.add_state('1', CAFE_FIRST) +SWITCH_CAFE_SELECT.add_state('2', CAFE_SECOND) + + class CafeStatus(Enum): STUDENT_LIST = 0 OCR = 1 @@ -177,6 +187,7 @@ class Cafe(UI): is_reward_on = self.config.Cafe_Reward is_touch_on = self.config.Cafe_Touch self.is_adjust_on = self.config.Cafe_AutoAdjust + is_second_cafe_on = self.config.Cafe_SecondCafe self.ui_ensure(page_cafe) @@ -186,14 +197,39 @@ class Cafe(UI): check_timer = Timer(1, count=1) is_list = False is_reset = False + is_second = False is_enable = is_reward_on or is_touch_on - while is_enable: + while 1: + if not is_enable: + break + self.device.screenshot() if self.ui_additional(): continue + if is_second_cafe_on and not is_second and status == CafeStatus.FINISHED: + if not SWITCH_CAFE.appear(main=self): + logger.warning('Cafe switch not found') + continue + if SWITCH_CAFE.get(main=self) == 'off': + SWITCH_CAFE.set('on', main=self) + logger.info('Switching to second cafe') + if not SWITCH_CAFE_SELECT.appear(main=self): + logger.info('Cafe switch select not found') + continue + match (SWITCH_CAFE_SELECT.get(main=self)): + case '1': + if self.click_with_interval(CAFE_SECOND): + continue + case '2': + logger.info('Cafe second arrived') + status = CafeStatus.STUDENT_LIST + is_list = False + is_second = True + self.check = 0 + if not loading_timer.reached(): continue @@ -224,7 +260,11 @@ class Cafe(UI): status = self._handle_cafe(status) logger.attr('Status', status) - if status is CafeStatus.FINISHED: - break + if not is_second_cafe_on: + if status is CafeStatus.FINISHED: + break + else: + if is_second and status is CafeStatus.FINISHED: + break self.config.task_delay(server_update=True, minute=180)