From 2ae3dac16d4b72ced496e654e4cdc8dc85e63536 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Wed, 28 Jun 2023 02:03:23 +0800 Subject: [PATCH] Add: Map buttons and technique points --- assets/share/map/control/A_BUTTON.png | Bin 0 -> 14904 bytes assets/share/map/control/E_BUTTON.png | Bin 0 -> 13599 bytes assets/share/map/control/JOYSTICK.png | Bin 0 -> 6975 bytes assets/share/map/control/RUN_BUTTON.png | Bin 0 -> 12810 bytes .../share/map/control/TECHNIQUE_POINT_1.png | Bin 0 -> 6130 bytes .../share/map/control/TECHNIQUE_POINT_2.png | Bin 0 -> 6182 bytes .../share/map/control/TECHNIQUE_POINT_3.png | Bin 0 -> 6217 bytes .../share/map/control/TECHNIQUE_POINT_4.png | Bin 0 -> 6198 bytes .../share/map/control/TECHNIQUE_POINT_5.png | Bin 0 -> 6097 bytes tasks/map/assets/assets_map_control.py | 95 ++++++++++++++++++ tasks/map/control/joystick.py | 82 +++++++++++++++ 11 files changed, 177 insertions(+) create mode 100644 assets/share/map/control/A_BUTTON.png create mode 100644 assets/share/map/control/E_BUTTON.png create mode 100644 assets/share/map/control/JOYSTICK.png create mode 100644 assets/share/map/control/RUN_BUTTON.png create mode 100644 assets/share/map/control/TECHNIQUE_POINT_1.png create mode 100644 assets/share/map/control/TECHNIQUE_POINT_2.png create mode 100644 assets/share/map/control/TECHNIQUE_POINT_3.png create mode 100644 assets/share/map/control/TECHNIQUE_POINT_4.png create mode 100644 assets/share/map/control/TECHNIQUE_POINT_5.png create mode 100644 tasks/map/assets/assets_map_control.py create mode 100644 tasks/map/control/joystick.py diff --git a/assets/share/map/control/A_BUTTON.png b/assets/share/map/control/A_BUTTON.png new file mode 100644 index 0000000000000000000000000000000000000000..46e8a9f15bf6f379b68ef982153c38a90d858fa6 GIT binary patch literal 14904 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 literal 0 HcmV?d00001 diff --git a/assets/share/map/control/E_BUTTON.png b/assets/share/map/control/E_BUTTON.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe31de38cf27272919b3d79dd6e38642468f2d5 GIT binary patch literal 13599 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 CO-Zx> literal 0 HcmV?d00001 diff --git a/assets/share/map/control/JOYSTICK.png b/assets/share/map/control/JOYSTICK.png new file mode 100644 index 0000000000000000000000000000000000000000..1907050a9b75ff796c17e9ee776bcad2a0392d22 GIT binary patch literal 6975 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

!89H5E zSzhB{!F`#|E}jz7)*dYnP_HYG8t!a9%}0(?B?N>9-Z;HKsV~~G=JE2Dl(4^_$Wr)7 zVIPK#gDpEN6P+Pj!h9ine`L3hL-x2QvXHEJ-?Q(Mvd9T;f|Kev&un>Bn}&|gb9926 zN$+uv8xat=tw@)UcO-CI+Nj#kv$1T|^M0oG(lV@T%uI3*)(&Iy7`~Wv6A*)xocd|J zfglH5AXWzM4T+SXTIrg3jGjv zd*AGX5sHWvp!hHiJ5iF8yuu0P?u}no2Ll+T-_QNFv|1)~g?h^lHrRPQ_T8$Mk7l7v z=jV^Af>5^rAY>ygxLQdSnVXE~2$|b&s7}|tT6%RQ_GtkB!JkbWF?I#($&S;wP8GSn zuz)N_+0N050i~`RYAl5>>V3l+Put=j+gBZS&6>+hA0akR5}*g{NXZz>S0tlidH)S_ z_WvNR6&0~+1vVxbc~;AtY)(k0(D~5ahzR11FLalb<%Awn+0@W46+5<9{r4&SFaE~` iQ0H6MFIqf5CkDQ}G>glEZ}0xsvF5!8Y85Kh;r|CrDW`-0 literal 0 HcmV?d00001 diff --git a/assets/share/map/control/TECHNIQUE_POINT_2.png b/assets/share/map/control/TECHNIQUE_POINT_2.png new file mode 100644 index 0000000000000000000000000000000000000000..76f3d7197b369ae0ff68995535dd37ecb6072daa GIT binary patch literal 6182 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 literal 0 HcmV?d00001 diff --git a/assets/share/map/control/TECHNIQUE_POINT_3.png b/assets/share/map/control/TECHNIQUE_POINT_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0e2c7fa35d9247c5dc567551858b8adbf7a97079 GIT binary patch literal 6217 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 S+aCNKSXEi`VY#B!^Zx^*o91-@ literal 0 HcmV?d00001 diff --git a/assets/share/map/control/TECHNIQUE_POINT_4.png b/assets/share/map/control/TECHNIQUE_POINT_4.png new file mode 100644 index 0000000000000000000000000000000000000000..1adda0efa65a8db18945891a509291d67bee0d48 GIT binary patch literal 6198 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 HRxkepQ5M`T literal 0 HcmV?d00001 diff --git a/assets/share/map/control/TECHNIQUE_POINT_5.png b/assets/share/map/control/TECHNIQUE_POINT_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5fcf8b4ba1a54624deb01bd07ccb4c01013cd93d GIT binary patch literal 6097 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 AVgLXD literal 0 HcmV?d00001 diff --git a/tasks/map/assets/assets_map_control.py b/tasks/map/assets/assets_map_control.py new file mode 100644 index 000000000..a0782a019 --- /dev/null +++ b/tasks/map/assets/assets_map_control.py @@ -0,0 +1,95 @@ +from module.base.button import Button, ButtonWrapper + +# This file was auto-generated, do not modify it manually. To generate: +# ``` python -m dev_tools.button_extract ``` + +A_BUTTON = ButtonWrapper( + name='A_BUTTON', + share=Button( + file='./assets/share/map/control/A_BUTTON.png', + area=(998, 508, 1078, 588), + search=(978, 488, 1098, 608), + color=(85, 86, 89), + button=(998, 508, 1078, 588), + ), +) +E_BUTTON = ButtonWrapper( + name='E_BUTTON', + share=Button( + file='./assets/share/map/control/E_BUTTON.png', + area=(875, 583, 944, 650), + search=(855, 563, 964, 670), + color=(67, 68, 71), + button=(875, 583, 944, 650), + ), +) +JOYSTICK = ButtonWrapper( + name='JOYSTICK', + share=Button( + file='./assets/share/map/control/JOYSTICK.png', + area=(234, 546, 262, 574), + search=(214, 526, 282, 594), + color=(43, 48, 62), + button=(234, 546, 262, 574), + ), +) +RUN_BUTTON = ButtonWrapper( + name='RUN_BUTTON', + share=Button( + file='./assets/share/map/control/RUN_BUTTON.png', + area=(1125, 582, 1191, 651), + search=(1105, 562, 1211, 671), + color=(73, 76, 83), + button=(1125, 582, 1191, 651), + ), +) +TECHNIQUE_POINT_1 = ButtonWrapper( + name='TECHNIQUE_POINT_1', + share=Button( + file='./assets/share/map/control/TECHNIQUE_POINT_1.png', + area=(854, 594, 867, 607), + search=(834, 574, 887, 627), + color=(149, 141, 186), + button=(854, 594, 867, 607), + ), +) +TECHNIQUE_POINT_2 = ButtonWrapper( + name='TECHNIQUE_POINT_2', + share=Button( + file='./assets/share/map/control/TECHNIQUE_POINT_2.png', + area=(862, 578, 876, 592), + search=(842, 558, 896, 612), + color=(139, 132, 174), + button=(862, 578, 876, 592), + ), +) +TECHNIQUE_POINT_3 = ButtonWrapper( + name='TECHNIQUE_POINT_3', + share=Button( + file='./assets/share/map/control/TECHNIQUE_POINT_3.png', + area=(875, 566, 889, 580), + search=(855, 546, 909, 600), + color=(138, 130, 173), + button=(875, 566, 889, 580), + ), +) +TECHNIQUE_POINT_4 = ButtonWrapper( + name='TECHNIQUE_POINT_4', + share=Button( + file='./assets/share/map/control/TECHNIQUE_POINT_4.png', + area=(891, 559, 905, 573), + search=(871, 539, 925, 593), + color=(138, 130, 173), + button=(891, 559, 905, 573), + ), +) +TECHNIQUE_POINT_5 = ButtonWrapper( + name='TECHNIQUE_POINT_5', + share=Button( + file='./assets/share/map/control/TECHNIQUE_POINT_5.png', + area=(908, 559, 921, 573), + search=(888, 539, 941, 593), + color=(71, 72, 77), + button=(908, 559, 921, 573), + ), +) diff --git a/tasks/map/control/joystick.py b/tasks/map/control/joystick.py new file mode 100644 index 000000000..77ced0dbd --- /dev/null +++ b/tasks/map/control/joystick.py @@ -0,0 +1,82 @@ +from functools import cached_property + +from module.base.timer import Timer +from module.logger import logger +from tasks.base.ui import UI +from tasks.map.assets.assets_map_control import * + + +class MapControlJoystick(UI): + _map_A_timer = Timer(1) + _map_E_timer = Timer(1) + _map_run_timer = Timer(1) + + @cached_property + def joystick_center(self) -> tuple[float, float]: + x1, y1, x2, y2 = JOYSTICK.area + return (x1 + x2) / 2, (y1 + y2) / 2 + + def map_get_technique_points(self): + """ + Returns: + int: 0 to 5. + """ + points = [ + self.image_color_count(button, color=(255, 255, 255), threshold=221, count=20) + for button in [ + TECHNIQUE_POINT_1, + TECHNIQUE_POINT_2, + TECHNIQUE_POINT_3, + TECHNIQUE_POINT_4, + TECHNIQUE_POINT_5, + ] + ] + count = sum(points) + logger.attr('TechniquePoints', count) + return count + + def handle_map_A(self): + """ + Simply clicking A with an interval of 1s, no guarantee of success. + + Returns: + bool: If clicked. + """ + if self._map_A_timer.reached(): + self.device.click(A_BUTTON) + self._map_A_timer.reset() + return True + + return False + + def handle_map_E(self): + """ + Simply clicking E with an interval of 1s, no guarantee of success. + Note that E cannot be released if technique points ran out. + + Returns: + bool: If clicked. + """ + if self._map_E_timer.reached(): + self.device.click(E_BUTTON) + self._map_E_timer.reset() + return True + + return False + + def handle_map_run(self): + """ + Keep character running. + Note that RUN button can only be clicked when character is moving. + + Returns: + bool: If clicked. + """ + is_running = self.image_color_count(RUN_BUTTON, color=(208, 183, 138), threshold=221, count=100) + + if not is_running and self._map_run_timer.reached(): + self.device.click(RUN_BUTTON) + self._map_run_timer.reset() + return True + + return False