From 26f8f112f5608e54a699e7aa9831210881f220d5 Mon Sep 17 00:00:00 2001 From: positnuec <93694981+positnuec@users.noreply.github.com> Date: Wed, 22 Jul 2026 07:11:30 +0800 Subject: [PATCH] Add: asset for Akashi grid overlap avoidance --- assets/cn/os_handler/MAP_OPTIONS_AREA.png | Bin 0 -> 34642 bytes module/os/map.py | 14 +++++--------- module/os_handler/assets.py | 1 + 3 files changed, 6 insertions(+), 9 deletions(-) create mode 100644 assets/cn/os_handler/MAP_OPTIONS_AREA.png diff --git a/assets/cn/os_handler/MAP_OPTIONS_AREA.png b/assets/cn/os_handler/MAP_OPTIONS_AREA.png new file mode 100644 index 0000000000000000000000000000000000000000..82e9b8e9c7897247d5becabbed8bc42ffa765ffe GIT binary patch literal 34642 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 XG!nS-Nwn$ntjvvVZr9wp```Zq+c_1X literal 0 HcmV?d00001 diff --git a/module/os/map.py b/module/os/map.py index 18b4fe1a5..3665d88cd 100644 --- a/module/os/map.py +++ b/module/os/map.py @@ -16,16 +16,12 @@ from module.os.fleet import OSFleet, BossFleet from module.os.globe_camera import GlobeCamera from module.os.globe_operation import RewardUncollectedError from module.os_handler.assets import AUTO_SEARCH_OS_MAP_OPTION_OFF, AUTO_SEARCH_OS_MAP_OPTION_OFF_DISABLED, \ - AUTO_SEARCH_OS_MAP_OPTION_ON, AUTO_SEARCH_REWARD + AUTO_SEARCH_OS_MAP_OPTION_ON, AUTO_SEARCH_REWARD, MAP_OPTIONS_AREA from module.os_handler.storage import StorageHandler from module.os_handler.strategic import StrategicSearchHandler from module.ui.assets import GOTO_MAIN from module.ui.page import page_os -# UI button area where clicking may trigger UI buttons instead of fleet movement -# To be replaced with an asset in the future -OS_UI_BUTTON_AREA = (1170, 455, 1280, 720) - class OSMap(OSFleet, Map, GlobeCamera, StorageHandler, StrategicSearchHandler): def os_init(self): @@ -1021,7 +1017,7 @@ class OSMap(OSFleet, Map, GlobeCamera, StorageHandler, StrategicSearchHandler): Args: drop: - _ui_avoid_count (int): Internal counter for UI button area avoidance attempts + _ui_avoid_count (int): Internal counter for map options area avoidance attempts Returns: bool: If solved a map random event @@ -1043,9 +1039,9 @@ class OSMap(OSFleet, Map, GlobeCamera, StorageHandler, StrategicSearchHandler): logger.info(f'Found Akashi on {grid}') fleet = self.convert_radar_to_local((0, 0)) if fleet.distance_to(grid) > 1: - # Avoid clicking grid that overlaps with UI button area - if _ui_avoid_count < 3 and area_cross_area(grid.button, OS_UI_BUTTON_AREA, threshold=0): - logger.info(f'Akashi grid {grid} overlaps with UI button area, swipe camera to avoid') + # Avoid clicking grid that overlaps with map options area + if _ui_avoid_count < 3 and area_cross_area(grid.button, MAP_OPTIONS_AREA.area, threshold=0): + logger.info(f'Akashi grid {grid} overlaps with map options area, swipe camera to avoid') vector = np.array(grid.location) - np.array(fleet.location) vector = tuple((vector // 2).astype(int)) self.map_swipe(vector) diff --git a/module/os_handler/assets.py b/module/os_handler/assets.py index fe9c6765b..f7933060d 100644 --- a/module/os_handler/assets.py +++ b/module/os_handler/assets.py @@ -23,6 +23,7 @@ GET_MEOWFFICER_ITEMS_1 = Button(area={'cn': (558, 211, 730, 242), 'en': (550, 21 GET_MEOWFFICER_ITEMS_2 = Button(area={'cn': (558, 140, 730, 171), 'en': (550, 140, 723, 176), 'jp': (538, 146, 731, 182), 'tw': (558, 140, 730, 171)}, color={'cn': (186, 200, 231), 'en': (165, 191, 242), 'jp': (143, 179, 249), 'tw': (186, 200, 231)}, button={'cn': (558, 140, 730, 171), 'en': (550, 140, 723, 176), 'jp': (538, 146, 731, 182), 'tw': (558, 140, 730, 171)}, file={'cn': './assets/cn/os_handler/GET_MEOWFFICER_ITEMS_2.png', 'en': './assets/en/os_handler/GET_MEOWFFICER_ITEMS_2.png', 'jp': './assets/jp/os_handler/GET_MEOWFFICER_ITEMS_2.png', 'tw': './assets/tw/os_handler/GET_MEOWFFICER_ITEMS_2.png'}) IN_MAP = Button(area={'cn': (925, 644, 986, 674), 'en': (923, 660, 978, 674), 'jp': (926, 645, 985, 674), 'tw': (925, 645, 986, 674)}, color={'cn': (244, 212, 159), 'en': (247, 227, 200), 'jp': (241, 211, 160), 'tw': (244, 212, 160)}, button={'cn': (925, 644, 986, 674), 'en': (923, 660, 978, 674), 'jp': (926, 645, 985, 674), 'tw': (925, 645, 986, 674)}, file={'cn': './assets/cn/os_handler/IN_MAP.png', 'en': './assets/en/os_handler/IN_MAP.png', 'jp': './assets/jp/os_handler/IN_MAP.png', 'tw': './assets/tw/os_handler/IN_MAP.png'}) MAP_ARCHIVES = Button(area={'cn': (1180, 353, 1280, 411), 'en': (1212, 391, 1280, 411), 'jp': (1180, 353, 1280, 411), 'tw': (1180, 353, 1280, 411)}, color={'cn': (134, 255, 255), 'en': (134, 255, 255), 'jp': (134, 255, 255), 'tw': (134, 255, 255)}, button={'cn': (1180, 353, 1280, 411), 'en': (1212, 391, 1280, 411), 'jp': (1180, 353, 1280, 411), 'tw': (1180, 353, 1280, 411)}, file={'cn': './assets/cn/os_handler/MAP_ARCHIVES.png', 'en': './assets/en/os_handler/MAP_ARCHIVES.png', 'jp': './assets/jp/os_handler/MAP_ARCHIVES.png', 'tw': './assets/tw/os_handler/MAP_ARCHIVES.png'}) +MAP_OPTIONS_AREA = Button(area={'cn': (1171, 455, 1280, 636), 'en': (1171, 455, 1280, 636), 'jp': (1171, 455, 1280, 636), 'tw': (1171, 455, 1280, 636)}, color={'cn': (99, 118, 135), 'en': (99, 118, 135), 'jp': (99, 118, 135), 'tw': (99, 118, 135)}, button={'cn': (1171, 455, 1280, 636), 'en': (1171, 455, 1280, 636), 'jp': (1171, 455, 1280, 636), 'tw': (1171, 455, 1280, 636)}, file={'cn': './assets/cn/os_handler/MAP_OPTIONS_AREA.png', 'en': './assets/cn/os_handler/MAP_OPTIONS_AREA.png', 'jp': './assets/cn/os_handler/MAP_OPTIONS_AREA.png', 'tw': './assets/cn/os_handler/MAP_OPTIONS_AREA.png'}) MAP_WORLD = Button(area={'cn': (943, 499, 1048, 512), 'en': (943, 499, 1048, 512), 'jp': (943, 499, 1048, 512), 'tw': (943, 499, 1048, 512)}, color={'cn': (71, 74, 83), 'en': (71, 74, 83), 'jp': (71, 74, 83), 'tw': (71, 74, 83)}, button={'cn': (578, 675, 702, 691), 'en': (578, 675, 702, 691), 'jp': (578, 675, 702, 691), 'tw': (578, 675, 702, 692)}, file={'cn': './assets/cn/os_handler/MAP_WORLD.png', 'en': './assets/en/os_handler/MAP_WORLD.png', 'jp': './assets/jp/os_handler/MAP_WORLD.png', 'tw': './assets/tw/os_handler/MAP_WORLD.png'}) MISSION_CHECK = Button(area={'cn': (120, 122, 229, 148), 'en': (120, 125, 323, 147), 'jp': (119, 121, 230, 148), 'tw': (119, 121, 230, 149)}, color={'cn': (145, 153, 187), 'en': (139, 148, 184), 'jp': (131, 142, 180), 'tw': (143, 153, 187)}, button={'cn': (120, 122, 229, 148), 'en': (120, 125, 323, 147), 'jp': (119, 121, 230, 148), 'tw': (119, 121, 230, 149)}, file={'cn': './assets/cn/os_handler/MISSION_CHECK.png', 'en': './assets/en/os_handler/MISSION_CHECK.png', 'jp': './assets/jp/os_handler/MISSION_CHECK.png', 'tw': './assets/tw/os_handler/MISSION_CHECK.png'}) MISSION_CHECKOUT = Button(area={'cn': (1026, 204, 1114, 234), 'en': (1029, 205, 1112, 232), 'jp': (1026, 204, 1114, 234), 'tw': (1026, 204, 1114, 234)}, color={'cn': (152, 153, 156), 'en': (153, 154, 158), 'jp': (157, 158, 161), 'tw': (152, 153, 156)}, button={'cn': (1026, 204, 1114, 234), 'en': (1029, 205, 1112, 232), 'jp': (1026, 204, 1114, 234), 'tw': (1026, 204, 1114, 234)}, file={'cn': './assets/cn/os_handler/MISSION_CHECKOUT.png', 'en': './assets/en/os_handler/MISSION_CHECKOUT.png', 'jp': './assets/jp/os_handler/MISSION_CHECKOUT.png', 'tw': './assets/tw/os_handler/MISSION_CHECKOUT.png'})