diff --git a/alas.py b/alas.py index 8df1c45ce..6a49de830 100644 --- a/alas.py +++ b/alas.py @@ -15,6 +15,7 @@ from module.logger import logger from module.notify import handle_notify from module.gg_handler.gg_handler import GGHandler +g_current_task: str class AzurLaneAutoScript: stop_event: threading.Event = None @@ -573,6 +574,9 @@ class AzurLaneAutoScript: # Init device and change server _ = self.device + global g_current_task + g_current_task = task + # Skip first restart if task == 'Restart': if self.is_first_task: diff --git a/assets/cn/equipment/EQUIP_1.png b/assets/cn/equipment/EQUIP_1.png index 53f70fd22..75182dd92 100644 Binary files a/assets/cn/equipment/EQUIP_1.png and b/assets/cn/equipment/EQUIP_1.png differ diff --git a/assets/cn/equipment/EQUIP_1_NEW.png b/assets/cn/equipment/EQUIP_1_NEW.png new file mode 100644 index 000000000..75182dd92 Binary files /dev/null and b/assets/cn/equipment/EQUIP_1_NEW.png differ diff --git a/assets/cn/equipment/EQUIP_1_OLD.png b/assets/cn/equipment/EQUIP_1_OLD.png new file mode 100644 index 000000000..53f70fd22 Binary files /dev/null and b/assets/cn/equipment/EQUIP_1_OLD.png differ diff --git a/assets/cn/equipment/EQUIP_2.png b/assets/cn/equipment/EQUIP_2.png index ecc6cf29b..3887b16d1 100644 Binary files a/assets/cn/equipment/EQUIP_2.png and b/assets/cn/equipment/EQUIP_2.png differ diff --git a/assets/cn/equipment/EQUIP_2_NEW.png b/assets/cn/equipment/EQUIP_2_NEW.png new file mode 100644 index 000000000..3887b16d1 Binary files /dev/null and b/assets/cn/equipment/EQUIP_2_NEW.png differ diff --git a/assets/cn/equipment/EQUIP_2_OLD.png b/assets/cn/equipment/EQUIP_2_OLD.png new file mode 100644 index 000000000..ecc6cf29b Binary files /dev/null and b/assets/cn/equipment/EQUIP_2_OLD.png differ diff --git a/assets/cn/equipment/EQUIP_3.png b/assets/cn/equipment/EQUIP_3.png index dc890355f..7cae81dac 100644 Binary files a/assets/cn/equipment/EQUIP_3.png and b/assets/cn/equipment/EQUIP_3.png differ diff --git a/assets/cn/equipment/EQUIP_3_NEW.png b/assets/cn/equipment/EQUIP_3_NEW.png new file mode 100644 index 000000000..7cae81dac Binary files /dev/null and b/assets/cn/equipment/EQUIP_3_NEW.png differ diff --git a/assets/cn/equipment/EQUIP_3_OLD.png b/assets/cn/equipment/EQUIP_3_OLD.png new file mode 100644 index 000000000..dc890355f Binary files /dev/null and b/assets/cn/equipment/EQUIP_3_OLD.png differ diff --git a/assets/cn/equipment/FLEET_DETAIL.png b/assets/cn/equipment/FLEET_DETAIL.png new file mode 100644 index 000000000..2fc9b9cd6 Binary files /dev/null and b/assets/cn/equipment/FLEET_DETAIL.png differ diff --git a/assets/cn/equipment/FLEET_DETAIL_CHECK.png b/assets/cn/equipment/FLEET_DETAIL_CHECK.png index 0bfc387c4..73a637f17 100644 Binary files a/assets/cn/equipment/FLEET_DETAIL_CHECK.png and b/assets/cn/equipment/FLEET_DETAIL_CHECK.png differ diff --git a/assets/cn/equipment/FLEET_DETAIL_CHECK_NEW.png b/assets/cn/equipment/FLEET_DETAIL_CHECK_NEW.png new file mode 100644 index 000000000..73a637f17 Binary files /dev/null and b/assets/cn/equipment/FLEET_DETAIL_CHECK_NEW.png differ diff --git a/assets/cn/equipment/FLEET_DETAIL_CHECK_OLD.png b/assets/cn/equipment/FLEET_DETAIL_CHECK_OLD.png new file mode 100644 index 000000000..0bfc387c4 Binary files /dev/null and b/assets/cn/equipment/FLEET_DETAIL_CHECK_OLD.png differ diff --git a/assets/cn/equipment/FLEET_DETAIL_ENTER.png b/assets/cn/equipment/FLEET_DETAIL_ENTER.png new file mode 100644 index 000000000..d71319ea0 Binary files /dev/null and b/assets/cn/equipment/FLEET_DETAIL_ENTER.png differ diff --git a/assets/cn/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png b/assets/cn/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png new file mode 100644 index 000000000..d0048df45 Binary files /dev/null and b/assets/cn/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png differ diff --git a/assets/cn/equipment/FLEET_ENTER_FLAGSHIP.png b/assets/cn/equipment/FLEET_ENTER_FLAGSHIP.png index 6d7c68e36..5b62c21c9 100644 Binary files a/assets/cn/equipment/FLEET_ENTER_FLAGSHIP.png and b/assets/cn/equipment/FLEET_ENTER_FLAGSHIP.png differ diff --git a/assets/cn/equipment/FLEET_ENTER_FLAGSHIP_NEW.png b/assets/cn/equipment/FLEET_ENTER_FLAGSHIP_NEW.png new file mode 100644 index 000000000..5b62c21c9 Binary files /dev/null and b/assets/cn/equipment/FLEET_ENTER_FLAGSHIP_NEW.png differ diff --git a/assets/cn/equipment/FLEET_ENTER_FLAGSHIP_OLD.png b/assets/cn/equipment/FLEET_ENTER_FLAGSHIP_OLD.png new file mode 100644 index 000000000..6d7c68e36 Binary files /dev/null and b/assets/cn/equipment/FLEET_ENTER_FLAGSHIP_OLD.png differ diff --git a/assets/cn/exercise/EQUIP_ENTER.png b/assets/cn/exercise/EQUIP_ENTER.png index e341ff5fa..f56737b51 100644 Binary files a/assets/cn/exercise/EQUIP_ENTER.png and b/assets/cn/exercise/EQUIP_ENTER.png differ diff --git a/assets/cn/exercise/EQUIP_ENTER_NEW.png b/assets/cn/exercise/EQUIP_ENTER_NEW.png new file mode 100644 index 000000000..f56737b51 Binary files /dev/null and b/assets/cn/exercise/EQUIP_ENTER_NEW.png differ diff --git a/assets/cn/exercise/EQUIP_ENTER_OLD.png b/assets/cn/exercise/EQUIP_ENTER_OLD.png new file mode 100644 index 000000000..e341ff5fa Binary files /dev/null and b/assets/cn/exercise/EQUIP_ENTER_OLD.png differ diff --git a/assets/en/equipment/FLEET_DETAIL.png b/assets/en/equipment/FLEET_DETAIL.png new file mode 100644 index 000000000..2fc9b9cd6 Binary files /dev/null and b/assets/en/equipment/FLEET_DETAIL.png differ diff --git a/assets/en/equipment/FLEET_DETAIL_CHECK.png b/assets/en/equipment/FLEET_DETAIL_CHECK.png index 472a4db06..73a637f17 100644 Binary files a/assets/en/equipment/FLEET_DETAIL_CHECK.png and b/assets/en/equipment/FLEET_DETAIL_CHECK.png differ diff --git a/assets/en/equipment/FLEET_DETAIL_CHECK_NEW.png b/assets/en/equipment/FLEET_DETAIL_CHECK_NEW.png new file mode 100644 index 000000000..73a637f17 Binary files /dev/null and b/assets/en/equipment/FLEET_DETAIL_CHECK_NEW.png differ diff --git a/assets/en/equipment/FLEET_DETAIL_CHECK_OLD.png b/assets/en/equipment/FLEET_DETAIL_CHECK_OLD.png new file mode 100644 index 000000000..472a4db06 Binary files /dev/null and b/assets/en/equipment/FLEET_DETAIL_CHECK_OLD.png differ diff --git a/assets/en/equipment/FLEET_DETAIL_ENTER.png b/assets/en/equipment/FLEET_DETAIL_ENTER.png new file mode 100644 index 000000000..d71319ea0 Binary files /dev/null and b/assets/en/equipment/FLEET_DETAIL_ENTER.png differ diff --git a/assets/en/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png b/assets/en/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png new file mode 100644 index 000000000..d0048df45 Binary files /dev/null and b/assets/en/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png differ diff --git a/assets/en/equipment/FLEET_ENTER_FLAGSHIP.png b/assets/en/equipment/FLEET_ENTER_FLAGSHIP.png index 6d7c68e36..5b62c21c9 100644 Binary files a/assets/en/equipment/FLEET_ENTER_FLAGSHIP.png and b/assets/en/equipment/FLEET_ENTER_FLAGSHIP.png differ diff --git a/assets/en/equipment/FLEET_ENTER_FLAGSHIP_NEW.png b/assets/en/equipment/FLEET_ENTER_FLAGSHIP_NEW.png new file mode 100644 index 000000000..5b62c21c9 Binary files /dev/null and b/assets/en/equipment/FLEET_ENTER_FLAGSHIP_NEW.png differ diff --git a/assets/en/equipment/FLEET_ENTER_FLAGSHIP_OLD.png b/assets/en/equipment/FLEET_ENTER_FLAGSHIP_OLD.png new file mode 100644 index 000000000..6d7c68e36 Binary files /dev/null and b/assets/en/equipment/FLEET_ENTER_FLAGSHIP_OLD.png differ diff --git a/assets/en/exercise/EQUIP_ENTER.png b/assets/en/exercise/EQUIP_ENTER.png index e341ff5fa..f56737b51 100644 Binary files a/assets/en/exercise/EQUIP_ENTER.png and b/assets/en/exercise/EQUIP_ENTER.png differ diff --git a/assets/en/exercise/EQUIP_ENTER_NEW.png b/assets/en/exercise/EQUIP_ENTER_NEW.png new file mode 100644 index 000000000..f56737b51 Binary files /dev/null and b/assets/en/exercise/EQUIP_ENTER_NEW.png differ diff --git a/assets/en/exercise/EQUIP_ENTER_OLD.png b/assets/en/exercise/EQUIP_ENTER_OLD.png new file mode 100644 index 000000000..e341ff5fa Binary files /dev/null and b/assets/en/exercise/EQUIP_ENTER_OLD.png differ diff --git a/assets/jp/equipment/FLEET_DETAIL.png b/assets/jp/equipment/FLEET_DETAIL.png new file mode 100644 index 000000000..2fc9b9cd6 Binary files /dev/null and b/assets/jp/equipment/FLEET_DETAIL.png differ diff --git a/assets/jp/equipment/FLEET_DETAIL_CHECK.png b/assets/jp/equipment/FLEET_DETAIL_CHECK.png index da1eff331..73a637f17 100644 Binary files a/assets/jp/equipment/FLEET_DETAIL_CHECK.png and b/assets/jp/equipment/FLEET_DETAIL_CHECK.png differ diff --git a/assets/jp/equipment/FLEET_DETAIL_CHECK_NEW.png b/assets/jp/equipment/FLEET_DETAIL_CHECK_NEW.png new file mode 100644 index 000000000..73a637f17 Binary files /dev/null and b/assets/jp/equipment/FLEET_DETAIL_CHECK_NEW.png differ diff --git a/assets/jp/equipment/FLEET_DETAIL_CHECK_OLD.png b/assets/jp/equipment/FLEET_DETAIL_CHECK_OLD.png new file mode 100644 index 000000000..da1eff331 Binary files /dev/null and b/assets/jp/equipment/FLEET_DETAIL_CHECK_OLD.png differ diff --git a/assets/jp/equipment/FLEET_DETAIL_ENTER.png b/assets/jp/equipment/FLEET_DETAIL_ENTER.png new file mode 100644 index 000000000..d71319ea0 Binary files /dev/null and b/assets/jp/equipment/FLEET_DETAIL_ENTER.png differ diff --git a/assets/jp/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png b/assets/jp/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png new file mode 100644 index 000000000..d0048df45 Binary files /dev/null and b/assets/jp/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png differ diff --git a/assets/jp/equipment/FLEET_ENTER_FLAGSHIP.png b/assets/jp/equipment/FLEET_ENTER_FLAGSHIP.png index 6d7c68e36..5b62c21c9 100644 Binary files a/assets/jp/equipment/FLEET_ENTER_FLAGSHIP.png and b/assets/jp/equipment/FLEET_ENTER_FLAGSHIP.png differ diff --git a/assets/jp/equipment/FLEET_ENTER_FLAGSHIP_NEW.png b/assets/jp/equipment/FLEET_ENTER_FLAGSHIP_NEW.png new file mode 100644 index 000000000..5b62c21c9 Binary files /dev/null and b/assets/jp/equipment/FLEET_ENTER_FLAGSHIP_NEW.png differ diff --git a/assets/jp/equipment/FLEET_ENTER_FLAGSHIP_OLD.png b/assets/jp/equipment/FLEET_ENTER_FLAGSHIP_OLD.png new file mode 100644 index 000000000..6d7c68e36 Binary files /dev/null and b/assets/jp/equipment/FLEET_ENTER_FLAGSHIP_OLD.png differ diff --git a/assets/jp/exercise/EQUIP_ENTER.png b/assets/jp/exercise/EQUIP_ENTER.png index e341ff5fa..f56737b51 100644 Binary files a/assets/jp/exercise/EQUIP_ENTER.png and b/assets/jp/exercise/EQUIP_ENTER.png differ diff --git a/assets/jp/exercise/EQUIP_ENTER_NEW.png b/assets/jp/exercise/EQUIP_ENTER_NEW.png new file mode 100644 index 000000000..f56737b51 Binary files /dev/null and b/assets/jp/exercise/EQUIP_ENTER_NEW.png differ diff --git a/assets/jp/exercise/EQUIP_ENTER_OLD.png b/assets/jp/exercise/EQUIP_ENTER_OLD.png new file mode 100644 index 000000000..e341ff5fa Binary files /dev/null and b/assets/jp/exercise/EQUIP_ENTER_OLD.png differ diff --git a/assets/tw/equipment/FLEET_DETAIL.png b/assets/tw/equipment/FLEET_DETAIL.png new file mode 100644 index 000000000..2fc9b9cd6 Binary files /dev/null and b/assets/tw/equipment/FLEET_DETAIL.png differ diff --git a/assets/tw/equipment/FLEET_DETAIL_CHECK.png b/assets/tw/equipment/FLEET_DETAIL_CHECK.png index ff18f0f7f..73a637f17 100644 Binary files a/assets/tw/equipment/FLEET_DETAIL_CHECK.png and b/assets/tw/equipment/FLEET_DETAIL_CHECK.png differ diff --git a/assets/tw/equipment/FLEET_DETAIL_CHECK_NEW.png b/assets/tw/equipment/FLEET_DETAIL_CHECK_NEW.png new file mode 100644 index 000000000..73a637f17 Binary files /dev/null and b/assets/tw/equipment/FLEET_DETAIL_CHECK_NEW.png differ diff --git a/assets/tw/equipment/FLEET_DETAIL_CHECK_OLD.png b/assets/tw/equipment/FLEET_DETAIL_CHECK_OLD.png new file mode 100644 index 000000000..ff18f0f7f Binary files /dev/null and b/assets/tw/equipment/FLEET_DETAIL_CHECK_OLD.png differ diff --git a/assets/tw/equipment/FLEET_DETAIL_ENTER.png b/assets/tw/equipment/FLEET_DETAIL_ENTER.png new file mode 100644 index 000000000..d71319ea0 Binary files /dev/null and b/assets/tw/equipment/FLEET_DETAIL_ENTER.png differ diff --git a/assets/tw/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png b/assets/tw/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png new file mode 100644 index 000000000..d0048df45 Binary files /dev/null and b/assets/tw/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png differ diff --git a/assets/tw/equipment/FLEET_ENTER_FLAGSHIP.png b/assets/tw/equipment/FLEET_ENTER_FLAGSHIP.png index 6d7c68e36..5b62c21c9 100644 Binary files a/assets/tw/equipment/FLEET_ENTER_FLAGSHIP.png and b/assets/tw/equipment/FLEET_ENTER_FLAGSHIP.png differ diff --git a/assets/tw/equipment/FLEET_ENTER_FLAGSHIP_NEW.png b/assets/tw/equipment/FLEET_ENTER_FLAGSHIP_NEW.png new file mode 100644 index 000000000..5b62c21c9 Binary files /dev/null and b/assets/tw/equipment/FLEET_ENTER_FLAGSHIP_NEW.png differ diff --git a/assets/tw/equipment/FLEET_ENTER_FLAGSHIP_OLD.png b/assets/tw/equipment/FLEET_ENTER_FLAGSHIP_OLD.png new file mode 100644 index 000000000..6d7c68e36 Binary files /dev/null and b/assets/tw/equipment/FLEET_ENTER_FLAGSHIP_OLD.png differ diff --git a/assets/tw/exercise/EQUIP_ENTER.png b/assets/tw/exercise/EQUIP_ENTER.png index e341ff5fa..f56737b51 100644 Binary files a/assets/tw/exercise/EQUIP_ENTER.png and b/assets/tw/exercise/EQUIP_ENTER.png differ diff --git a/assets/tw/exercise/EQUIP_ENTER_NEW.png b/assets/tw/exercise/EQUIP_ENTER_NEW.png new file mode 100644 index 000000000..f56737b51 Binary files /dev/null and b/assets/tw/exercise/EQUIP_ENTER_NEW.png differ diff --git a/assets/tw/exercise/EQUIP_ENTER_OLD.png b/assets/tw/exercise/EQUIP_ENTER_OLD.png new file mode 100644 index 000000000..e341ff5fa Binary files /dev/null and b/assets/tw/exercise/EQUIP_ENTER_OLD.png differ diff --git a/module/equipment/assets.py b/module/equipment/assets.py index 30ebfd803..7f6ba6691 100644 --- a/module/equipment/assets.py +++ b/module/equipment/assets.py @@ -9,9 +9,15 @@ EQUIPMENT_OPEN = Button(area={'cn': (1139, 87, 1231, 111), 'en': (1143, 90, 1229 EQUIPMENT_SCROLL_BOTTOM = Button(area={'cn': (1256, 575, 1264, 583), 'en': (1256, 575, 1264, 583), 'jp': (1256, 575, 1264, 583), 'tw': (1256, 575, 1264, 583)}, color={'cn': (244, 209, 66), 'en': (244, 209, 66), 'jp': (244, 209, 66), 'tw': (244, 209, 66)}, button={'cn': (1256, 575, 1264, 583), 'en': (1256, 575, 1264, 583), 'jp': (1256, 575, 1264, 583), 'tw': (1256, 575, 1264, 583)}, file={'cn': './assets/cn/equipment/EQUIPMENT_SCROLL_BOTTOM.png', 'en': './assets/en/equipment/EQUIPMENT_SCROLL_BOTTOM.png', 'jp': './assets/jp/equipment/EQUIPMENT_SCROLL_BOTTOM.png', 'tw': './assets/tw/equipment/EQUIPMENT_SCROLL_BOTTOM.png'}) EQUIPPING_OFF = Button(area={'cn': (25, 565, 60, 589), 'en': (30, 585, 59, 605), 'jp': (25, 565, 60, 589), 'tw': (25, 565, 60, 589)}, color={'cn': (94, 101, 104), 'en': (65, 70, 96), 'jp': (94, 101, 104), 'tw': (94, 101, 104)}, button={'cn': (25, 565, 60, 589), 'en': (30, 585, 59, 605), 'jp': (25, 565, 60, 589), 'tw': (25, 565, 60, 589)}, file={'cn': './assets/cn/equipment/EQUIPPING_OFF.png', 'en': './assets/en/equipment/EQUIPPING_OFF.png', 'jp': './assets/jp/equipment/EQUIPPING_OFF.png', 'tw': './assets/tw/equipment/EQUIPPING_OFF.png'}) EQUIPPING_ON = Button(area={'cn': (26, 485, 60, 510), 'en': (32, 563, 54, 583), 'jp': (26, 485, 60, 510), 'tw': (26, 485, 60, 510)}, color={'cn': (184, 191, 214), 'en': (164, 173, 208), 'jp': (184, 191, 214), 'tw': (184, 191, 214)}, button={'cn': (26, 486, 57, 584), 'en': (7, 559, 78, 606), 'jp': (26, 486, 57, 584), 'tw': (26, 483, 61, 590)}, file={'cn': './assets/cn/equipment/EQUIPPING_ON.png', 'en': './assets/en/equipment/EQUIPPING_ON.png', 'jp': './assets/jp/equipment/EQUIPPING_ON.png', 'tw': './assets/tw/equipment/EQUIPPING_ON.png'}) -EQUIP_1 = Button(area={'cn': (1191, 266, 1247, 319), 'en': (1200, 273, 1241, 314), 'jp': (1191, 265, 1248, 320), 'tw': (1190, 265, 1249, 319)}, color={'cn': (98, 142, 207), 'en': (77, 130, 192), 'jp': (97, 142, 206), 'tw': (102, 147, 211)}, button={'cn': (1191, 266, 1247, 319), 'en': (1200, 273, 1241, 314), 'jp': (1191, 265, 1248, 320), 'tw': (1190, 265, 1249, 319)}, file={'cn': './assets/cn/equipment/EQUIP_1.png', 'en': './assets/en/equipment/EQUIP_1.png', 'jp': './assets/jp/equipment/EQUIP_1.png', 'tw': './assets/tw/equipment/EQUIP_1.png'}) -EQUIP_2 = Button(area={'cn': (1191, 366, 1247, 419), 'en': (1200, 374, 1241, 415), 'jp': (1191, 365, 1248, 420), 'tw': (1190, 365, 1249, 419)}, color={'cn': (95, 139, 202), 'en': (77, 130, 192), 'jp': (94, 138, 201), 'tw': (100, 144, 208)}, button={'cn': (1191, 366, 1247, 419), 'en': (1200, 374, 1241, 415), 'jp': (1191, 365, 1248, 420), 'tw': (1190, 365, 1249, 419)}, file={'cn': './assets/cn/equipment/EQUIP_2.png', 'en': './assets/en/equipment/EQUIP_2.png', 'jp': './assets/jp/equipment/EQUIP_2.png', 'tw': './assets/tw/equipment/EQUIP_2.png'}) -EQUIP_3 = Button(area={'cn': (1191, 466, 1247, 519), 'en': (1200, 475, 1241, 516), 'jp': (1190, 467, 1249, 520), 'tw': (1190, 466, 1249, 520)}, color={'cn': (94, 137, 201), 'en': (80, 132, 192), 'jp': (89, 134, 197), 'tw': (97, 142, 205)}, button={'cn': (1191, 466, 1247, 519), 'en': (1200, 475, 1241, 516), 'jp': (1190, 467, 1249, 520), 'tw': (1190, 466, 1249, 520)}, file={'cn': './assets/cn/equipment/EQUIP_3.png', 'en': './assets/en/equipment/EQUIP_3.png', 'jp': './assets/jp/equipment/EQUIP_3.png', 'tw': './assets/tw/equipment/EQUIP_3.png'}) +EQUIP_1 = Button(area={'cn': (1211, 274, 1230, 315), 'en': (1200, 273, 1241, 314), 'jp': (1191, 265, 1248, 320), 'tw': (1190, 265, 1249, 319)}, color={'cn': (133, 181, 222), 'en': (77, 130, 192), 'jp': (97, 142, 206), 'tw': (102, 147, 211)}, button={'cn': (1211, 274, 1230, 315), 'en': (1200, 273, 1241, 314), 'jp': (1191, 265, 1248, 320), 'tw': (1190, 265, 1249, 319)}, file={'cn': './assets/cn/equipment/EQUIP_1.png', 'en': './assets/en/equipment/EQUIP_1.png', 'jp': './assets/jp/equipment/EQUIP_1.png', 'tw': './assets/tw/equipment/EQUIP_1.png'}) +EQUIP_1_NEW = Button(area={'cn': (1211, 274, 1230, 315), 'en': (1211, 274, 1230, 315), 'jp': (1211, 274, 1230, 315), 'tw': (1211, 274, 1230, 315)}, color={'cn': (133, 181, 222), 'en': (133, 181, 222), 'jp': (133, 181, 222), 'tw': (133, 181, 222)}, button={'cn': (1211, 274, 1230, 315), 'en': (1211, 274, 1230, 315), 'jp': (1211, 274, 1230, 315), 'tw': (1211, 274, 1230, 315)}, file={'cn': './assets/cn/equipment/EQUIP_1_NEW.png', 'en': './assets/cn/equipment/EQUIP_1_NEW.png', 'jp': './assets/cn/equipment/EQUIP_1_NEW.png', 'tw': './assets/cn/equipment/EQUIP_1_NEW.png'}) +EQUIP_1_OLD = Button(area={'cn': (1191, 266, 1247, 319), 'en': (1191, 266, 1247, 319), 'jp': (1191, 266, 1247, 319), 'tw': (1191, 266, 1247, 319)}, color={'cn': (98, 142, 207), 'en': (98, 142, 207), 'jp': (98, 142, 207), 'tw': (98, 142, 207)}, button={'cn': (1191, 266, 1247, 319), 'en': (1191, 266, 1247, 319), 'jp': (1191, 266, 1247, 319), 'tw': (1191, 266, 1247, 319)}, file={'cn': './assets/cn/equipment/EQUIP_1_OLD.png', 'en': './assets/cn/equipment/EQUIP_1_OLD.png', 'jp': './assets/cn/equipment/EQUIP_1_OLD.png', 'tw': './assets/cn/equipment/EQUIP_1_OLD.png'}) +EQUIP_2 = Button(area={'cn': (1211, 374, 1230, 416), 'en': (1200, 374, 1241, 415), 'jp': (1191, 365, 1248, 420), 'tw': (1190, 365, 1249, 419)}, color={'cn': (130, 179, 220), 'en': (77, 130, 192), 'jp': (94, 138, 201), 'tw': (100, 144, 208)}, button={'cn': (1211, 374, 1230, 416), 'en': (1200, 374, 1241, 415), 'jp': (1191, 365, 1248, 420), 'tw': (1190, 365, 1249, 419)}, file={'cn': './assets/cn/equipment/EQUIP_2.png', 'en': './assets/en/equipment/EQUIP_2.png', 'jp': './assets/jp/equipment/EQUIP_2.png', 'tw': './assets/tw/equipment/EQUIP_2.png'}) +EQUIP_2_NEW = Button(area={'cn': (1211, 374, 1230, 416), 'en': (1211, 374, 1230, 416), 'jp': (1211, 374, 1230, 416), 'tw': (1211, 374, 1230, 416)}, color={'cn': (130, 179, 220), 'en': (130, 179, 220), 'jp': (130, 179, 220), 'tw': (130, 179, 220)}, button={'cn': (1211, 374, 1230, 416), 'en': (1211, 374, 1230, 416), 'jp': (1211, 374, 1230, 416), 'tw': (1211, 374, 1230, 416)}, file={'cn': './assets/cn/equipment/EQUIP_2_NEW.png', 'en': './assets/cn/equipment/EQUIP_2_NEW.png', 'jp': './assets/cn/equipment/EQUIP_2_NEW.png', 'tw': './assets/cn/equipment/EQUIP_2_NEW.png'}) +EQUIP_2_OLD = Button(area={'cn': (1191, 366, 1247, 419), 'en': (1191, 366, 1247, 419), 'jp': (1191, 366, 1247, 419), 'tw': (1191, 366, 1247, 419)}, color={'cn': (95, 139, 202), 'en': (95, 139, 202), 'jp': (95, 139, 202), 'tw': (95, 139, 202)}, button={'cn': (1191, 366, 1247, 419), 'en': (1191, 366, 1247, 419), 'jp': (1191, 366, 1247, 419), 'tw': (1191, 366, 1247, 419)}, file={'cn': './assets/cn/equipment/EQUIP_2_OLD.png', 'en': './assets/cn/equipment/EQUIP_2_OLD.png', 'jp': './assets/cn/equipment/EQUIP_2_OLD.png', 'tw': './assets/cn/equipment/EQUIP_2_OLD.png'}) +EQUIP_3 = Button(area={'cn': (1211, 475, 1230, 517), 'en': (1200, 475, 1241, 516), 'jp': (1190, 467, 1249, 520), 'tw': (1190, 466, 1249, 520)}, color={'cn': (130, 179, 220), 'en': (80, 132, 192), 'jp': (89, 134, 197), 'tw': (97, 142, 205)}, button={'cn': (1211, 475, 1230, 517), 'en': (1200, 475, 1241, 516), 'jp': (1190, 467, 1249, 520), 'tw': (1190, 466, 1249, 520)}, file={'cn': './assets/cn/equipment/EQUIP_3.png', 'en': './assets/en/equipment/EQUIP_3.png', 'jp': './assets/jp/equipment/EQUIP_3.png', 'tw': './assets/tw/equipment/EQUIP_3.png'}) +EQUIP_3_NEW = Button(area={'cn': (1211, 475, 1230, 517), 'en': (1211, 475, 1230, 517), 'jp': (1211, 475, 1230, 517), 'tw': (1211, 475, 1230, 517)}, color={'cn': (130, 179, 220), 'en': (130, 179, 220), 'jp': (130, 179, 220), 'tw': (130, 179, 220)}, button={'cn': (1211, 475, 1230, 517), 'en': (1211, 475, 1230, 517), 'jp': (1211, 475, 1230, 517), 'tw': (1211, 475, 1230, 517)}, file={'cn': './assets/cn/equipment/EQUIP_3_NEW.png', 'en': './assets/cn/equipment/EQUIP_3_NEW.png', 'jp': './assets/cn/equipment/EQUIP_3_NEW.png', 'tw': './assets/cn/equipment/EQUIP_3_NEW.png'}) +EQUIP_3_OLD = Button(area={'cn': (1191, 466, 1247, 519), 'en': (1191, 466, 1247, 519), 'jp': (1191, 466, 1247, 519), 'tw': (1191, 466, 1247, 519)}, color={'cn': (94, 137, 201), 'en': (94, 137, 201), 'jp': (94, 137, 201), 'tw': (94, 137, 201)}, button={'cn': (1191, 466, 1247, 519), 'en': (1191, 466, 1247, 519), 'jp': (1191, 466, 1247, 519), 'tw': (1191, 466, 1247, 519)}, file={'cn': './assets/cn/equipment/EQUIP_3_OLD.png', 'en': './assets/cn/equipment/EQUIP_3_OLD.png', 'jp': './assets/cn/equipment/EQUIP_3_OLD.png', 'tw': './assets/cn/equipment/EQUIP_3_OLD.png'}) EQUIP_CONFIRM = Button(area={'cn': (792, 623, 959, 677), 'en': (809, 633, 940, 658), 'jp': (792, 623, 960, 674), 'tw': (792, 623, 960, 677)}, color={'cn': (222, 154, 59), 'en': (236, 192, 133), 'jp': (222, 152, 55), 'tw': (223, 153, 57)}, button={'cn': (792, 623, 959, 677), 'en': (793, 620, 961, 673), 'jp': (792, 623, 960, 674), 'tw': (792, 623, 960, 677)}, file={'cn': './assets/cn/equipment/EQUIP_CONFIRM.png', 'en': './assets/en/equipment/EQUIP_CONFIRM.png', 'jp': './assets/jp/equipment/EQUIP_CONFIRM.png', 'tw': './assets/tw/equipment/EQUIP_CONFIRM.png'}) EQUIP_OFF = Button(area={'cn': (907, 565, 1037, 610), 'en': (911, 564, 1034, 607), 'jp': (908, 564, 1039, 612), 'tw': (907, 565, 1037, 611)}, color={'cn': (112, 153, 216), 'en': (91, 142, 212), 'jp': (110, 151, 213), 'tw': (106, 150, 214)}, button={'cn': (907, 565, 1037, 610), 'en': (911, 564, 1034, 607), 'jp': (908, 564, 1039, 612), 'tw': (907, 565, 1037, 611)}, file={'cn': './assets/cn/equipment/EQUIP_OFF.png', 'en': './assets/en/equipment/EQUIP_OFF.png', 'jp': './assets/jp/equipment/EQUIP_OFF.png', 'tw': './assets/tw/equipment/EQUIP_OFF.png'}) EQUIP_SAVE = Button(area={'cn': (355, 312, 452, 433), 'en': (355, 312, 452, 433), 'jp': (407, 312, 476, 404), 'tw': (355, 312, 452, 433)}, color={'cn': (170, 156, 122), 'en': (170, 156, 122), 'jp': (119, 94, 128), 'tw': (170, 156, 122)}, button={'cn': (355, 312, 452, 433), 'en': (355, 312, 452, 433), 'jp': (407, 312, 476, 404), 'tw': (355, 312, 452, 433)}, file={'cn': './assets/cn/equipment/EQUIP_SAVE.png', 'en': './assets/en/equipment/EQUIP_SAVE.png', 'jp': './assets/jp/equipment/EQUIP_SAVE.png', 'tw': './assets/tw/equipment/EQUIP_SAVE.png'}) @@ -22,11 +28,15 @@ EQUIP_TAKE_ON_2 = Button(area={'cn': (866, 511, 950, 604), 'en': (866, 511, 950, EQUIP_TAKE_ON_3 = Button(area={'cn': (129, 252, 213, 345), 'en': (129, 252, 213, 345), 'jp': (129, 252, 213, 345), 'tw': (129, 252, 213, 345)}, color={'cn': (105, 108, 115), 'en': (105, 108, 115), 'jp': (105, 108, 115), 'tw': (105, 108, 115)}, button={'cn': (129, 252, 213, 345), 'en': (129, 252, 213, 345), 'jp': (129, 252, 213, 345), 'tw': (129, 252, 213, 345)}, file={'cn': './assets/cn/equipment/EQUIP_TAKE_ON_3.png', 'en': './assets/en/equipment/EQUIP_TAKE_ON_3.png', 'jp': './assets/jp/equipment/EQUIP_TAKE_ON_3.png', 'tw': './assets/tw/equipment/EQUIP_TAKE_ON_3.png'}) EQUIP_TAKE_ON_4 = Button(area={'cn': (128, 432, 212, 525), 'en': (128, 432, 212, 525), 'jp': (128, 432, 212, 525), 'tw': (128, 432, 212, 525)}, color={'cn': (109, 111, 120), 'en': (109, 111, 120), 'jp': (109, 111, 120), 'tw': (109, 111, 120)}, button={'cn': (128, 432, 212, 525), 'en': (128, 432, 212, 525), 'jp': (128, 432, 212, 525), 'tw': (128, 432, 212, 525)}, file={'cn': './assets/cn/equipment/EQUIP_TAKE_ON_4.png', 'en': './assets/en/equipment/EQUIP_TAKE_ON_4.png', 'jp': './assets/jp/equipment/EQUIP_TAKE_ON_4.png', 'tw': './assets/tw/equipment/EQUIP_TAKE_ON_4.png'}) FLEET_DETAIL = Button(area={'cn': (906, 644, 1008, 699), 'en': (906, 644, 1008, 699), 'jp': (906, 644, 1008, 699), 'tw': (906, 644, 1008, 699)}, color={'cn': (166, 170, 188), 'en': (166, 170, 188), 'jp': (166, 170, 188), 'tw': (166, 170, 188)}, button={'cn': (906, 644, 1008, 699), 'en': (906, 644, 1008, 699), 'jp': (906, 644, 1008, 699), 'tw': (906, 644, 1008, 699)}, file={'cn': './assets/cn/equipment/FLEET_DETAIL.png', 'en': './assets/en/equipment/FLEET_DETAIL.png', 'jp': './assets/jp/equipment/FLEET_DETAIL.png', 'tw': './assets/tw/equipment/FLEET_DETAIL.png'}) -FLEET_DETAIL_CHECK = Button(area={'cn': (915, 647, 980, 679), 'en': (915, 649, 980, 677), 'jp': (915, 647, 979, 679), 'tw': (915, 647, 980, 680)}, color={'cn': (234, 195, 154), 'en': (236, 200, 160), 'jp': (234, 195, 154), 'tw': (237, 196, 154)}, button={'cn': (915, 647, 980, 679), 'en': (915, 649, 980, 677), 'jp': (915, 647, 979, 679), 'tw': (915, 647, 980, 680)}, file={'cn': './assets/cn/equipment/FLEET_DETAIL_CHECK.png', 'en': './assets/en/equipment/FLEET_DETAIL_CHECK.png', 'jp': './assets/jp/equipment/FLEET_DETAIL_CHECK.png', 'tw': './assets/tw/equipment/FLEET_DETAIL_CHECK.png'}) +FLEET_DETAIL_CHECK = Button(area={'cn': (904, 684, 1102, 701), 'en': (904, 684, 1102, 701), 'jp': (904, 684, 1102, 701), 'tw': (904, 684, 1102, 701)}, color={'cn': (225, 168, 105), 'en': (225, 168, 105), 'jp': (225, 168, 105), 'tw': (225, 168, 105)}, button={'cn': (904, 684, 1102, 701), 'en': (904, 684, 1102, 701), 'jp': (904, 684, 1102, 701), 'tw': (904, 684, 1102, 701)}, file={'cn': './assets/cn/equipment/FLEET_DETAIL_CHECK.png', 'en': './assets/en/equipment/FLEET_DETAIL_CHECK.png', 'jp': './assets/jp/equipment/FLEET_DETAIL_CHECK.png', 'tw': './assets/tw/equipment/FLEET_DETAIL_CHECK.png'}) +FLEET_DETAIL_CHECK_NEW = Button(area={'cn': (904, 684, 1102, 701), 'en': (904, 684, 1102, 701), 'jp': (904, 684, 1102, 701), 'tw': (904, 684, 1102, 701)}, color={'cn': (225, 168, 105), 'en': (225, 168, 105), 'jp': (225, 168, 105), 'tw': (225, 168, 105)}, button={'cn': (904, 684, 1102, 701), 'en': (904, 684, 1102, 701), 'jp': (904, 684, 1102, 701), 'tw': (904, 684, 1102, 701)}, file={'cn': './assets/cn/equipment/FLEET_DETAIL_CHECK_NEW.png', 'en': './assets/en/equipment/FLEET_DETAIL_CHECK_NEW.png', 'jp': './assets/jp/equipment/FLEET_DETAIL_CHECK_NEW.png', 'tw': './assets/tw/equipment/FLEET_DETAIL_CHECK_NEW.png'}) +FLEET_DETAIL_CHECK_OLD = Button(area={'cn': (915, 647, 980, 679), 'en': (915, 649, 980, 677), 'jp': (915, 647, 979, 679), 'tw': (915, 647, 980, 680)}, color={'cn': (234, 195, 154), 'en': (236, 200, 160), 'jp': (234, 195, 154), 'tw': (237, 196, 154)}, button={'cn': (915, 647, 980, 679), 'en': (915, 649, 980, 677), 'jp': (915, 647, 979, 679), 'tw': (915, 647, 980, 680)}, file={'cn': './assets/cn/equipment/FLEET_DETAIL_CHECK_OLD.png', 'en': './assets/en/equipment/FLEET_DETAIL_CHECK_OLD.png', 'jp': './assets/jp/equipment/FLEET_DETAIL_CHECK_OLD.png', 'tw': './assets/tw/equipment/FLEET_DETAIL_CHECK_OLD.png'}) FLEET_DETAIL_ENTER = Button(area={'cn': (729, 314, 802, 438), 'en': (729, 314, 802, 438), 'jp': (729, 314, 802, 438), 'tw': (729, 314, 802, 438)}, color={'cn': (154, 149, 147), 'en': (154, 149, 147), 'jp': (154, 149, 147), 'tw': (154, 149, 147)}, button={'cn': (729, 314, 802, 438), 'en': (729, 314, 802, 438), 'jp': (729, 314, 802, 438), 'tw': (729, 314, 802, 438)}, file={'cn': './assets/cn/equipment/FLEET_DETAIL_ENTER.png', 'en': './assets/en/equipment/FLEET_DETAIL_ENTER.png', 'jp': './assets/jp/equipment/FLEET_DETAIL_ENTER.png', 'tw': './assets/tw/equipment/FLEET_DETAIL_ENTER.png'}) FLEET_DETAIL_ENTER_FLAGSHIP = Button(area={'cn': (103, 327, 176, 437), 'en': (103, 327, 176, 437), 'jp': (103, 327, 176, 437), 'tw': (103, 327, 176, 437)}, color={'cn': (141, 135, 138), 'en': (141, 135, 138), 'jp': (141, 135, 138), 'tw': (141, 135, 138)}, button={'cn': (103, 327, 176, 437), 'en': (103, 327, 176, 437), 'jp': (103, 327, 176, 437), 'tw': (103, 327, 176, 437)}, file={'cn': './assets/cn/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png', 'en': './assets/en/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png', 'jp': './assets/jp/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png', 'tw': './assets/tw/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png'}) FLEET_ENTER = Button(area={'cn': (502, 474, 517, 489), 'en': (502, 474, 517, 489), 'jp': (502, 474, 517, 489), 'tw': (502, 474, 517, 489)}, color={'cn': (58, 62, 77), 'en': (58, 62, 77), 'jp': (58, 62, 77), 'tw': (58, 62, 77)}, button={'cn': (502, 474, 517, 489), 'en': (502, 474, 517, 489), 'jp': (502, 474, 517, 489), 'tw': (502, 474, 517, 489)}, file={'cn': './assets/cn/equipment/FLEET_ENTER.png', 'en': './assets/en/equipment/FLEET_ENTER.png', 'jp': './assets/jp/equipment/FLEET_ENTER.png', 'tw': './assets/tw/equipment/FLEET_ENTER.png'}) -FLEET_ENTER_FLAGSHIP = Button(area={'cn': (577, 306, 604, 321), 'en': (577, 306, 604, 321), 'jp': (577, 306, 604, 321), 'tw': (577, 306, 604, 321)}, color={'cn': (95, 83, 74), 'en': (95, 83, 74), 'jp': (95, 83, 74), 'tw': (95, 83, 74)}, button={'cn': (577, 306, 604, 321), 'en': (577, 306, 604, 321), 'jp': (577, 306, 604, 321), 'tw': (577, 306, 604, 321)}, file={'cn': './assets/cn/equipment/FLEET_ENTER_FLAGSHIP.png', 'en': './assets/en/equipment/FLEET_ENTER_FLAGSHIP.png', 'jp': './assets/jp/equipment/FLEET_ENTER_FLAGSHIP.png', 'tw': './assets/tw/equipment/FLEET_ENTER_FLAGSHIP.png'}) +FLEET_ENTER_FLAGSHIP = Button(area={'cn': (577, 277, 605, 291), 'en': (577, 277, 605, 291), 'jp': (577, 277, 605, 291), 'tw': (577, 277, 605, 291)}, color={'cn': (132, 124, 128), 'en': (132, 124, 128), 'jp': (132, 124, 128), 'tw': (132, 124, 128)}, button={'cn': (577, 277, 605, 291), 'en': (577, 277, 605, 291), 'jp': (577, 277, 605, 291), 'tw': (577, 277, 605, 291)}, file={'cn': './assets/cn/equipment/FLEET_ENTER_FLAGSHIP.png', 'en': './assets/en/equipment/FLEET_ENTER_FLAGSHIP.png', 'jp': './assets/jp/equipment/FLEET_ENTER_FLAGSHIP.png', 'tw': './assets/tw/equipment/FLEET_ENTER_FLAGSHIP.png'}) +FLEET_ENTER_FLAGSHIP_NEW = Button(area={'cn': (577, 277, 605, 291), 'en': (577, 277, 605, 291), 'jp': (577, 277, 605, 291), 'tw': (577, 277, 605, 291)}, color={'cn': (132, 124, 128), 'en': (132, 124, 128), 'jp': (132, 124, 128), 'tw': (132, 124, 128)}, button={'cn': (577, 277, 605, 291), 'en': (577, 277, 605, 291), 'jp': (577, 277, 605, 291), 'tw': (577, 277, 605, 291)}, file={'cn': './assets/cn/equipment/FLEET_ENTER_FLAGSHIP_NEW.png', 'en': './assets/en/equipment/FLEET_ENTER_FLAGSHIP_NEW.png', 'jp': './assets/jp/equipment/FLEET_ENTER_FLAGSHIP_NEW.png', 'tw': './assets/tw/equipment/FLEET_ENTER_FLAGSHIP_NEW.png'}) +FLEET_ENTER_FLAGSHIP_OLD = Button(area={'cn': (577, 306, 604, 321), 'en': (577, 306, 604, 321), 'jp': (577, 306, 604, 321), 'tw': (577, 306, 604, 321)}, color={'cn': (95, 83, 74), 'en': (95, 83, 74), 'jp': (95, 83, 74), 'tw': (95, 83, 74)}, button={'cn': (577, 306, 604, 321), 'en': (577, 306, 604, 321), 'jp': (577, 306, 604, 321), 'tw': (577, 306, 604, 321)}, file={'cn': './assets/cn/equipment/FLEET_ENTER_FLAGSHIP_OLD.png', 'en': './assets/en/equipment/FLEET_ENTER_FLAGSHIP_OLD.png', 'jp': './assets/jp/equipment/FLEET_ENTER_FLAGSHIP_OLD.png', 'tw': './assets/tw/equipment/FLEET_ENTER_FLAGSHIP_OLD.png'}) FLEET_NEXT = Button(area={'cn': (1234, 327, 1254, 356), 'en': (1234, 327, 1254, 356), 'jp': (1234, 327, 1254, 356), 'tw': (1234, 327, 1254, 356)}, color={'cn': (72, 93, 125), 'en': (72, 93, 125), 'jp': (72, 93, 125), 'tw': (72, 93, 125)}, button={'cn': (1234, 327, 1254, 356), 'en': (1234, 327, 1254, 356), 'jp': (1234, 327, 1254, 356), 'tw': (1234, 327, 1254, 356)}, file={'cn': './assets/cn/equipment/FLEET_NEXT.png', 'en': './assets/en/equipment/FLEET_NEXT.png', 'jp': './assets/jp/equipment/FLEET_NEXT.png', 'tw': './assets/tw/equipment/FLEET_NEXT.png'}) FLEET_PREV = Button(area={'cn': (26, 327, 46, 356), 'en': (26, 327, 46, 356), 'jp': (26, 327, 46, 356), 'tw': (26, 327, 46, 356)}, color={'cn': (72, 93, 125), 'en': (72, 93, 125), 'jp': (72, 93, 125), 'tw': (72, 93, 125)}, button={'cn': (26, 327, 46, 356), 'en': (26, 327, 46, 356), 'jp': (26, 327, 46, 356), 'tw': (26, 327, 46, 356)}, file={'cn': './assets/cn/equipment/FLEET_PREV.png', 'en': './assets/en/equipment/FLEET_PREV.png', 'jp': './assets/jp/equipment/FLEET_PREV.png', 'tw': './assets/tw/equipment/FLEET_PREV.png'}) OCR_FLEET_INDEX = Button(area={'cn': (957, 113, 987, 163), 'en': (957, 113, 987, 163), 'jp': (957, 113, 987, 163), 'tw': (957, 113, 987, 163)}, color={'cn': (36, 54, 86), 'en': (36, 54, 86), 'jp': (36, 54, 86), 'tw': (36, 54, 86)}, button={'cn': (957, 113, 987, 163), 'en': (957, 113, 987, 163), 'jp': (957, 113, 987, 163), 'tw': (957, 113, 987, 163)}, file={'cn': './assets/cn/equipment/OCR_FLEET_INDEX.png', 'en': './assets/en/equipment/OCR_FLEET_INDEX.png', 'jp': './assets/jp/equipment/OCR_FLEET_INDEX.png', 'tw': './assets/tw/equipment/OCR_FLEET_INDEX.png'}) diff --git a/module/equipment/assets_override.py b/module/equipment/assets_override.py new file mode 100644 index 000000000..42d7861af --- /dev/null +++ b/module/equipment/assets_override.py @@ -0,0 +1,60 @@ +from functools import wraps + +import module.equipment.assets as equip_assets + +g_equip_assets_ver = "new" + + +def equip_override_to_new(): + global g_equip_assets_ver + if g_equip_assets_ver == "new": + return + + equip_assets.EQUIP_1 = equip_assets.EQUIP_1_NEW + equip_assets.EQUIP_2 = equip_assets.EQUIP_2_NEW + equip_assets.EQUIP_3 = equip_assets.EQUIP_3_NEW + equip_assets.FLEET_DETAIL_CHECK = equip_assets.FLEET_DETAIL_CHECK_NEW + equip_assets.FLEET_ENTER_FLAGSHIP = equip_assets.FLEET_ENTER_FLAGSHIP_NEW + + +def equip_override_to_old(): + global g_equip_assets_ver + if g_equip_assets_ver == "old": + return + + equip_assets.EQUIP_1 = equip_assets.EQUIP_1_OLD + equip_assets.EQUIP_2 = equip_assets.EQUIP_2_OLD + equip_assets.EQUIP_3 = equip_assets.EQUIP_3_OLD + equip_assets.FLEET_DETAIL_CHECK = equip_assets.FLEET_DETAIL_CHECK_OLD + equip_assets.FLEET_ENTER_FLAGSHIP = equip_assets.FLEET_ENTER_FLAGSHIP_OLD + + +def equip_assets_override(ver: str = "old"): + """ + Args: + ver (str): "old" or "new" + """ + + def deco(func): + @wraps(func) + def wrapped_function(*args, **kwargs): + # switch to target ver + if ver == "old": + equip_override_to_old() + elif ver == "new": + equip_override_to_new() + else: + raise TypeError(f"Unknown equipment assets ver: {ver}") + res = func(*args, **kwargs) + # switch back + if ver == "old": + equip_override_to_new() + elif ver == "new": + equip_override_to_old() + else: + raise TypeError(f"Unknown equipment assets ver: {ver}") + return res + + return wrapped_function + + return deco diff --git a/module/equipment/equipment.py b/module/equipment/equipment.py index 8631dcc5f..244998c4f 100644 --- a/module/equipment/equipment.py +++ b/module/equipment/equipment.py @@ -9,6 +9,7 @@ from module.storage.storage import StorageHandler from module.ui.assets import BACK_ARROW from module.ui.navbar import Navbar from module.ui.switch import Switch +from module.equipment.assets_override import equip_assets_override equipping_filter = Switch('Equiping_filter') equipping_filter.add_status('on', check_button=EQUIPPING_ON) @@ -18,9 +19,276 @@ SWIPE_DISTANCE = 250 SWIPE_RANDOM_RANGE = (-40, -20, 40, 20) -class Equipment(StorageHandler): +class EquipmentOld(StorageHandler): equipment_has_take_on = False + @equip_assets_override("old") + def equipping_set(self, enable=False): + if equipping_filter.set('on' if enable else 'off', main=self): + self.wait_until_stable(SWIPE_AREA) + + @equip_assets_override("old") + def _equip_view_swipe(self, distance, check_button=EQUIPMENT_OPEN): + swipe_count = 0 + swipe_timer = Timer(5, count=10) + self.handle_info_bar() + SWIPE_CHECK.load_color(self.device.image) + SWIPE_CHECK._match_init = True # Disable ensure_template() on match(), allows ship to be properly determined + # whether actually different or not + while 1: + if not swipe_timer.started() or swipe_timer.reached(): + swipe_timer.reset() + self.device.swipe_vector(vector=(distance, 0), box=SWIPE_AREA.area, random_range=SWIPE_RANDOM_RANGE, + padding=0, duration=(0.1, 0.12), name='EQUIP_SWIPE') + # self.wait_until_appear(check_button, offset=(30, 30)) + skip_first_screenshot = True + while 1: + if skip_first_screenshot: + skip_first_screenshot = False + else: + self.device.screenshot() + if self.appear(check_button, offset=(30, 30)): + break + if self.appear(RETIRE_EQUIP_CONFIRM, offset=(30, 30)): + logger.info('RETIRE_EQUIP_CONFIRM popup in _equip_view_swipe()') + return False + swipe_count += 1 + + self.device.screenshot() + + if self.appear(RETIRE_EQUIP_CONFIRM, offset=(30, 30)): + logger.info('RETIRE_EQUIP_CONFIRM popup in _equip_view_swipe()') + return False + if SWIPE_CHECK.match(self.device.image): + if swipe_count > 1: + logger.info('Same ship on multiple swipes') + return False + continue + + if self.appear(check_button, offset=(30, 30)) and not SWIPE_CHECK.match(self.device.image): + logger.info('New ship detected on swipe') + return True + + @equip_assets_override("old") + def equip_view_next(self, check_button=EQUIPMENT_OPEN): + return self._equip_view_swipe(distance=-SWIPE_DISTANCE, check_button=check_button) + + @equip_assets_override("old") + def equip_view_prev(self, check_button=EQUIPMENT_OPEN): + return self._equip_view_swipe(distance=SWIPE_DISTANCE, check_button=check_button) + + @equip_assets_override("old") + def equip_enter(self, click_button, check_button=EQUIPMENT_OPEN, long_click=True, skil_first_screenshot=True): + enter_timer = Timer(10) + + while 1: + if skil_first_screenshot: + skil_first_screenshot = False + else: + self.device.screenshot() + + # End + if self.appear(check_button): + break + + # Long click accidentally became normal click, exit from dock + if long_click: + if self.appear(DOCK_CHECK, offset=(20, 20), interval=3): + logger.info(f'equip_enter {DOCK_CHECK} -> {BACK_ARROW}') + self.device.click(BACK_ARROW) + continue + if enter_timer.reached(): + if long_click: + self.device.long_click(click_button, duration=(1.5, 1.7)) + else: + self.device.click(click_button) + enter_timer.reset() + + @cached_property + @equip_assets_override("old") + def _equip_side_navbar(self): + """ + pry_sidebar 3 options + research. + equipment. + detail. + + regular_sidebar 4 options + enhancement. + limit break. + equipment. + detail. + + retrofit_sidebar 5 options + retrofit. + enhancement. + limit break. + equipment. + detail. + """ + equip_side_navbar = ButtonGrid( + origin=(21, 118), delta=(0, 94.5), button_shape=(60, 75), grid_shape=(1, 5), name='DETAIL_SIDE_NAVBAR') + + return Navbar(grids=equip_side_navbar, + active_color=(247, 255, 173), active_threshold=221, + inactive_color=(140, 162, 181), inactive_threshold=221) + + @equip_assets_override("old") + def equip_side_navbar_ensure(self, upper=None, bottom=None): + """ + Ensure able to transition to page + Whether page has completely loaded is handled + separately and optionally + + Args: + upper (int): + pry|regular|retrofit + 1|N/A|N/A for research. + N/A|N/A|1 for retrofit. + N/A|1|2 for enhancement. + N/A|2|3 for limit break. + 2|3|4 for equipment. + 3|4|5 for detail. + bottom (int): + pry|regular|retrofit + 3|N/A|N/A for research. + N/A|N/A|5 for retrofit. + N/A|4|4 for enhancement. + N/A|3|3 for limit break. + 2 for equipment. + 1 for detail. + + Returns: + bool: if side_navbar set ensured + """ + if self._equip_side_navbar.get_total(main=self) == 3: + if upper == 1 or bottom == 3: + logger.warning('Transitions to "research" is not supported') + return False + + if self._equip_side_navbar.set(self, upper=upper, bottom=bottom): + return True + return False + + @equip_assets_override("old") + def _equip_take_off_one(self, skip_first_screenshot=True): + bar_timer = Timer(5) + off_timer = Timer(5) + confirm_timer = Timer(5) + + while 1: + if skip_first_screenshot: + self.device.screenshot() + else: + skip_first_screenshot = False + + # End + # if self.handle_info_bar(): + # break + if off_timer.started() and self.info_bar_count(): + break + + if self.handle_storage_full(): + continue + + if confirm_timer.reached() and self.handle_popup_confirm(): + confirm_timer.reset() + continue + + if off_timer.reached(): + if not self.info_bar_count() and self.appear_then_click(EQUIP_OFF, offset=(20, 20)): + off_timer.reset() + continue + + if bar_timer.reached(): + if self.appear(EQUIPMENT_OPEN, offset=(20, 20)) and not self.appear(EQUIP_OFF, offset=(20, 20)): + self.device.click(EQUIPMENT_OPEN) + bar_timer.reset() + continue + + @equip_assets_override("old") + def equipment_take_off(self, enter, out, fleet): + """ + Args: + enter (Button): Long click to edit equipment. + out (Button): Button to confirm exit success. + fleet (list[int]): list of equipment record. [3, 1, 1, 1, 1, 1] + """ + logger.hr('Equipment take off') + self.equip_enter(enter) + + for index in '9'.join([str(x) for x in fleet if x > 0]): + index = int(index) + if index == 9: + self.equip_view_next() + else: + self._equip_take_off_one() + self.ui_click(click_button=EQUIPMENT_CLOSE, check_button=EQUIPMENT_OPEN, offset=None) + + self.ui_back(out) + self.equipment_has_take_on = False + + @equip_assets_override("old") + def _equip_take_on_one(self, index, skip_first_screenshot=True): + bar_timer = Timer(5) + on_timer = Timer(5) + + while 1: + if skip_first_screenshot: + self.device.screenshot() + else: + skip_first_screenshot = False + + # End + # if self.handle_info_bar(): + # break + if on_timer.started() and self.info_bar_count(): + break + + if bar_timer.reached() and not self.appear(EQUIP_1, offset=10): + self.device.click(EQUIPMENT_OPEN) + # self.device.sleep(0.3) + bar_timer.reset() + continue + + if on_timer.reached() and self.appear(EQUIP_1, offset=10) and not self.info_bar_count(): + if index == 1: + self.device.click(EQUIP_1) + elif index == 2: + self.device.click(EQUIP_2) + elif index == 3: + self.device.click(EQUIP_3) + + on_timer.reset() + continue + + @equip_assets_override("old") + def equipment_take_on(self, enter, out, fleet): + """ + Args: + enter (Button): Long click to edit equipment. + out (Button): Button to confirm exit success. + fleet (list[int]): list of equipment record. [3, 1, 1, 1, 1, 1] + """ + logger.hr('Equipment take on') + self.equip_enter(enter) + + for index in '9'.join([str(x) for x in fleet if x > 0]): + index = int(index) + if index == 9: + self.equip_view_next() + else: + self._equip_take_on_one(index=index) + self.ui_click(click_button=EQUIPMENT_CLOSE, check_button=EQUIPMENT_OPEN, offset=None) + + self.ui_back(out) + self.equipment_has_take_on = True + + +class EquipmentNew(StorageHandler): + equipment_has_take_on = False + + @equip_assets_override("new") def _ship_view_swipe(self, distance, check_button=EQUIPMENT_OPEN): swipe_count = 0 swipe_timer = Timer(5, count=10) @@ -62,23 +330,26 @@ class Equipment(StorageHandler): logger.info('New ship detected on swipe') return True + @equip_assets_override("new") def ship_view_next(self, check_button=EQUIPMENT_OPEN): return self._ship_view_swipe(distance=-SWIPE_DISTANCE, check_button=check_button) + @equip_assets_override("new") def ship_view_prev(self, check_button=EQUIPMENT_OPEN): return self._ship_view_swipe(distance=SWIPE_DISTANCE, check_button=check_button) - def ship_info_enter(self, click_button, check_button=EQUIPMENT_OPEN, long_click=True, skip_first_screenshot=True): + @equip_assets_override("new") + def ship_info_enter(self, click_button, check_button=EQUIPMENT_OPEN, long_click=True, skil_first_screenshot=True): enter_timer = Timer(10) while 1: - if skip_first_screenshot: - skip_first_screenshot = False + if skil_first_screenshot: + skil_first_screenshot = False else: self.device.screenshot() # End - if self.appear(check_button, offset=(5, 5)): + if self.appear(check_button): break # Long click accidentally became normal click, exit from dock @@ -95,6 +366,7 @@ class Equipment(StorageHandler): enter_timer.reset() @cached_property + @equip_assets_override("new") def _ship_side_navbar(self): """ pry_sidebar 3 options @@ -116,12 +388,13 @@ class Equipment(StorageHandler): detail. """ ship_side_navbar = ButtonGrid( - origin=(21, 118), delta=(0, 94.5), button_shape=(60, 75), grid_shape=(1, 5), name='SHIP_SIDE_NAVBAR') + origin=(21, 118), delta=(0, 94.5), button_shape=(60, 75), grid_shape=(1, 5), name='DETAIL_SIDE_NAVBAR') return Navbar(grids=ship_side_navbar, active_color=(247, 255, 173), active_threshold=221, inactive_color=(140, 162, 181), inactive_threshold=221) + @equip_assets_override("new") def ship_side_navbar_ensure(self, upper=None, bottom=None): """ Ensure able to transition to page @@ -158,6 +431,7 @@ class Equipment(StorageHandler): return True return False + @equip_assets_override("new") def ship_equipment_take_off(self, skip_first_screenshot=True): bar_timer = Timer(5) off_timer = Timer(5) @@ -178,7 +452,7 @@ class Equipment(StorageHandler): if self.handle_storage_full(): continue - if confirm_timer.reached() and self.handle_popup_confirm('EQUIPMENT_TAKE_OFF'): + if confirm_timer.reached() and self.handle_popup_confirm(): confirm_timer.reset() continue @@ -193,6 +467,7 @@ class Equipment(StorageHandler): bar_timer.reset() continue + @equip_assets_override("new") def fleet_equipment_take_off(self, enter, long_click, out): """ Args: @@ -205,13 +480,14 @@ class Equipment(StorageHandler): while True: self.ship_equipment_take_off() - self.ui_click(EQUIPMENT_CLOSE, check_button=EQUIPMENT_OPEN, skip_first_screenshot=True) + self.ui_click(click_button=EQUIPMENT_CLOSE, check_button=EQUIPMENT_OPEN, offset=None) if not self.ship_view_next(): break self.ui_back(out) self.equipment_has_take_on = False + @equip_assets_override("new") def ship_equipment_take_on_preset(self, index, skip_first_screenshot=True): bar_timer = Timer(5) on_timer = Timer(5) @@ -245,6 +521,7 @@ class Equipment(StorageHandler): on_timer.reset() continue + @equip_assets_override("new") def fleet_equipment_take_on_preset(self, preset_record, enter, long_click, out): """ Args: @@ -262,7 +539,14 @@ class Equipment(StorageHandler): self.ship_view_next() else: self.ship_equipment_take_on_preset(index=index) - self.ui_click(EQUIPMENT_CLOSE, check_button=EQUIPMENT_OPEN, skip_first_screenshot=True) + self.ui_click(click_button=EQUIPMENT_CLOSE, check_button=EQUIPMENT_OPEN, offset=None) self.ui_back(out) self.equipment_has_take_on = True + + +global g_current_task + + +class Equipment(EquipmentOld if g_current_task == "GemsFarming" else EquipmentNew): + ... diff --git a/module/equipment/equipment_change.py b/module/equipment/equipment_change.py index d1ad81f76..6b54fc2ef 100644 --- a/module/equipment/equipment_change.py +++ b/module/equipment/equipment_change.py @@ -2,6 +2,7 @@ from module.base.button import ButtonGrid from module.base.decorator import Config from module.base.utils import * from module.equipment.assets import * +from module.equipment.assets_override import equip_assets_override from module.equipment.equipment import Equipment from module.logger import logger from module.ui.assets import BACK_ARROW @@ -22,13 +23,165 @@ equipping_filter.add_status('on', check_button=EQUIPPING_ON) equipping_filter.add_status('off', check_button=EQUIPPING_OFF) -class EquipmentChange(Equipment): +class EquipmentChangeOld(Equipment): + equip_list = {} + equipping_list = [] + + @equip_assets_override("old") + def get_equiping_list(self, skip_first_screenshot=True): + ''' + Pages: + in: ship's details + ''' + logger.info("Get equipping list") + if skip_first_screenshot: + pass + else: + self.device.screenshot() + index = 0 + self.equipping_list = [] + for button in EQUIPMENT_GRID.buttons: + crop_image = self.image_crop(button) + edge_value = np.mean(np.abs(cv2.Sobel(crop_image, 3, 1, 1))) + # Nothing is 0.15~1 + # +1 is 40 + # +10 is 46 + if edge_value > 10: + self.equipping_list.append(index) + index += 1 + logger.info(f"Equipping list: {self.equipping_list}") + + @equip_assets_override("old") + def record_equipment(self, index_list=range(0, 5)): + ''' + Record equipment through upgrade page + Notice: The equipment icons in the upgrade page are the same size as the icons in the equipment status + ''' + logger.info('RECORD EQUIPMENT') + self.equip_side_navbar_ensure(bottom=1) + self.get_equiping_list() + + for index in index_list: + if index in self.equipping_list: + logger.info(f'Record {index}') + logger.info('Enter equipment info') + self.ui_click(appear_button=EQUIPMENT_OPEN, click_button=EQUIP_INFO_BAR[( + index, 0)], check_button=UPGRADE_ENTER) + logger.info('Enter upgrade inform') + self.ui_click(click_button=UPGRADE_ENTER, + check_button=UPGRADE_ENTER_CHECK, skip_first_screenshot=True) + logger.info('Save equipment tamplate') + self.equip_list[index] = self.image_crop(EQUIP_SAVE) + logger.info('Quit upgrade inform') + self.ui_click( + click_button=UPGRADE_QUIT, check_button=EQUIPMENT_OPEN, appear_button=UPGRADE_ENTER_CHECK, + skip_first_screenshot=True) + + @equip_assets_override("old") + def equipment_take_on(self, index_list=range(0, 5), skip_first_screenshot=True): + ''' + Equip the equipment previously recorded + ''' + logger.info('Take on equipment') + self.equip_side_navbar_ensure(bottom=2) + + for index in index_list: + if index in self.equipping_list: + logger.info(f'Take on {index}') + enter_button = globals()[ + 'EQUIP_TAKE_ON_{index}'.format(index=index)] + + self.ui_click(enter_button, check_button=EQUIPPING_ON, + skip_first_screenshot=skip_first_screenshot, offset=(5, 5)) + self.handle_info_bar() + self._find_equip(index) + + @Config.when(DEVICE_CONTROL_METHOD='minitouch') + @equip_assets_override("old") + def _equipment_swipe(self, distance=190): + # Distance of two commission is 146px + p1, p2 = random_rectangle_vector( + (0, -distance), box=(620, 67, 1154, 692), random_range=(-20, -5, 20, 5)) + self.device.drag(p1, p2, segments=2, shake=(25, 0), + point_random=(0, 0, 0, 0), shake_random=(-5, 0, 5, 0)) + self.device.sleep(0.3) + self.device.screenshot() + + @Config.when(DEVICE_CONTROL_METHOD=None) + @equip_assets_override("old") + def _equipment_swipe(self, distance=300): + # Distance of two commission is 146px + p1, p2 = random_rectangle_vector( + (0, -distance), box=(620, 67, 1154, 692), random_range=(-20, -5, 20, 5)) + self.device.drag(p1, p2, segments=2, shake=(25, 0), + point_random=(0, 0, 0, 0), shake_random=(-5, 0, 5, 0)) + self.device.sleep(0.3) + self.device.screenshot() + + @equip_assets_override("old") + def _equip_equipment(self, point, offset=(100, 100)): + ''' + Equip Equipment then back to ship details + Confirm the popup + Pages: + in: EQUIPMENT STATUS + out: SHIP_SIDEBAR_EQUIPMENT + ''' + logger.info('Equip equipment') + button = Button(area=(), color=(), button=(point[0], point[1], point[0] + offset[0], point[1] + offset[1]), + name='EQUIPMENT') + self.ui_click(appear_button=EQUIPPING_OFF, click_button=button, check_button=EQUIP_CONFIRM) + logger.info('Equip confirm') + self.ui_click(click_button=EQUIP_CONFIRM, check_button=SHIP_INFO_EQUIPMENT_CHECK) + + @equip_assets_override("old") + def _find_equip(self, index): + ''' + Find the equipment previously recorded + Pages: + in: EQUIPMENT STATUS + ''' + + self.equipping_set(False) + + res = cv2.matchTemplate(self.device.screenshot(), np.array( + self.equip_list[index]), cv2.TM_CCOEFF_NORMED) + _, sim, _, point = cv2.minMaxLoc(res) + + if sim > SIM_VALUE: + self._equip_equipment(point) + return + + for _ in range(0, 15): + self._equipment_swipe() + + if self.appear(EQUIP_CONFIRM, offset=(20, 20), interval=2): + self.device.click(BACK_ARROW) + continue + res = cv2.matchTemplate(self.device.screenshot(), np.array( + self.equip_list[index]), cv2.TM_CCOEFF_NORMED) + _, sim, _, point = cv2.minMaxLoc(res) + + if sim > SIM_VALUE: + self._equip_equipment(point) + break + if self.appear(EQUIPMENT_SCROLL_BOTTOM): + logger.warning('No recorded equipment was found.') + self.ui_back(check_button=globals()[f'EQUIP_TAKE_ON_{index}'], appear_button=EQUIPPING_OFF) + break + + return + + +class EquipmentChangeNew(Equipment): equipment_list = {} + @equip_assets_override("new") def equipping_set(self, enable=False): if equipping_filter.set('on' if enable else 'off', main=self): self.wait_until_stable(SWIPE_AREA) + @equip_assets_override("new") def ship_equipment_record_image(self, index_list=range(0, 5)): """ Record equipment through upgrade page @@ -36,19 +189,7 @@ class EquipmentChange(Equipment): """ logger.info('RECORD EQUIPMENT') self.ship_side_navbar_ensure(bottom=1) - - # Ensure EQUIPMENT_GRID in the right place - skip_first_screenshot = True - while True: - if skip_first_screenshot: - skip_first_screenshot = False - else: - self.device.screenshot() - if self.appear(EQUIPMENT_OPEN, offset=(5, 5)): - break - self.equipment_list = {} - info_bar_disappeared = False for index, button in enumerate(EQUIPMENT_GRID.buttons): if index not in index_list: continue @@ -65,20 +206,14 @@ class EquipmentChange(Equipment): # Enter upgrade inform self.ui_click(click_button=UPGRADE_ENTER, check_button=UPGRADE_ENTER_CHECK, skip_first_screenshot=True) - # Save equipment template - if not info_bar_disappeared: - self.handle_info_bar() - info_bar_disappeared = True self.equipment_list[index] = self.image_crop(EQUIP_SAVE) # Quit upgrade inform self.ui_click( click_button=UPGRADE_QUIT, check_button=EQUIPMENT_OPEN, appear_button=UPGRADE_ENTER_CHECK, skip_first_screenshot=True) - else: - logger.info(f"Equipment {index} is empty") - logger.info(f"Recorded equipment index list: {list(self.equipment_list.keys())}") + @equip_assets_override("new") def ship_equipment_take_on_image(self, index_list=range(0, 5), skip_first_screenshot=True): """ Equip the equipment previously recorded @@ -98,6 +233,7 @@ class EquipmentChange(Equipment): self._find_equipment(index) @Config.when(DEVICE_CONTROL_METHOD='minitouch') + @equip_assets_override("new") def _equipment_swipe(self, distance=190): # Distance of two commission is 146px p1, p2 = random_rectangle_vector( @@ -108,6 +244,7 @@ class EquipmentChange(Equipment): self.device.screenshot() @Config.when(DEVICE_CONTROL_METHOD=None) + @equip_assets_override("new") def _equipment_swipe(self, distance=300): # Distance of two commission is 146px p1, p2 = random_rectangle_vector( @@ -117,6 +254,7 @@ class EquipmentChange(Equipment): self.device.sleep(0.3) self.device.screenshot() + @equip_assets_override("new") def _equip_equipment(self, point, offset=(100, 100)): """ Equip Equipment then back to ship details @@ -128,12 +266,11 @@ class EquipmentChange(Equipment): logger.info('Equip equipment') button = Button(area=(), color=(), button=(point[0], point[1], point[0] + offset[0], point[1] + offset[1]), name='EQUIPMENT') - self.device.sleep(1) self.ui_click(appear_button=EQUIPPING_OFF, click_button=button, check_button=EQUIP_CONFIRM) - self.device.sleep(1) logger.info('Equip confirm') self.ui_click(click_button=EQUIP_CONFIRM, check_button=SHIP_INFO_EQUIPMENT_CHECK) + @equip_assets_override("new") def _find_equipment(self, index): """ Find the equipment previously recorded @@ -158,7 +295,7 @@ class EquipmentChange(Equipment): for _ in range(0, 15): self._equipment_swipe() - self.device.sleep(1) + if self.appear(EQUIP_CONFIRM, offset=(20, 20), interval=2): self.device.click(BACK_ARROW) continue @@ -175,3 +312,10 @@ class EquipmentChange(Equipment): break return + + +global g_current_task + + +class EquipmentChange(EquipmentChangeOld if g_current_task == "GemsFarming" else EquipmentChangeNew): + ... diff --git a/module/equipment/fleet_equipment.py b/module/equipment/fleet_equipment.py index ce04d81af..a347c7715 100644 --- a/module/equipment/fleet_equipment.py +++ b/module/equipment/fleet_equipment.py @@ -1,5 +1,6 @@ from module.equipment.assets import * from module.equipment.equipment import Equipment +from module.equipment.equipment_change import EquipmentChange from module.logger import logger from module.ocr.ocr import Digit from module.ui.assets import FLEET_CHECK @@ -8,7 +9,7 @@ from module.ui.page import page_fleet OCR_FLEET_INDEX = Digit(OCR_FLEET_INDEX, letter=(90, 154, 255), threshold=128, alphabet='123456') -class DailyEquipment(Equipment): +class DailyEquipmentOld(Equipment): equipment_has_take_on = False @property @@ -45,3 +46,40 @@ class DailyEquipment(Equipment): self.equipment_has_take_on = False self.device.sleep(1) return True + + +class FleetEquipmentNew(EquipmentChange): + def fleet_enter(self, fleet): + self.ui_ensure(page_fleet) + self.ui_ensure_index(fleet, letter=OCR_FLEET_INDEX, + next_button=FLEET_NEXT, prev_button=FLEET_PREV, skip_first_screenshot=True) + + def fleet_equipment_take_on_preset(self, preset_record, enter=FLEET_DETAIL_ENTER_FLAGSHIP, + long_click=False, out=FLEET_DETAIL_CHECK): + self.ui_click(FLEET_DETAIL, appear_button=page_fleet.check_button, + check_button=FLEET_DETAIL_CHECK, skip_first_screenshot=True) + super().fleet_equipment_take_on_preset(preset_record=preset_record, enter=FLEET_DETAIL_ENTER_FLAGSHIP, + long_click=False, out=FLEET_DETAIL_CHECK) + self.ui_back(FLEET_CHECK) + + def fleet_equipment_take_off(self, enter=FLEET_DETAIL_ENTER_FLAGSHIP, long_click=False, out=FLEET_DETAIL_CHECK): + self.ui_click(FLEET_DETAIL, appear_button=page_fleet.check_button, + check_button=FLEET_DETAIL_CHECK, skip_first_screenshot=True) + super().fleet_equipment_take_off(enter=enter, long_click=long_click, out=out) + self.ui_back(FLEET_CHECK) + + def fleet_enter_ship(self, button): + self.ui_click(FLEET_DETAIL, appear_button=page_fleet.check_button, + check_button=FLEET_DETAIL_CHECK, skip_first_screenshot=True) + self.ship_info_enter(button, long_click=False) + + def fleet_back(self): + self.ui_back(FLEET_DETAIL_CHECK) + self.ui_back(FLEET_CHECK) + + +global g_current_task + + +class FleetEquipment(DailyEquipmentOld if g_current_task == "GemsFarming" else FleetEquipmentNew): + ... diff --git a/module/exercise/assets.py b/module/exercise/assets.py index 8de41c543..d039b199a 100644 --- a/module/exercise/assets.py +++ b/module/exercise/assets.py @@ -9,7 +9,9 @@ CLICK_SAFE_AREA = Button(area={'cn': (1215, 637, 1260, 686), 'en': (1215, 637, 1 DEFENDER_HP_AREA = Button(area={'cn': (691, 43, 1004, 58), 'en': (691, 43, 1004, 58), 'jp': (691, 44, 1005, 56), 'tw': (691, 43, 1004, 58)}, color={'cn': (239, 51, 15), 'en': (239, 51, 15), 'jp': (244, 115, 98), 'tw': (239, 51, 15)}, button={'cn': (691, 43, 1004, 58), 'en': (691, 43, 1004, 58), 'jp': (691, 44, 1005, 56), 'tw': (691, 43, 1004, 58)}, file={'cn': './assets/cn/exercise/DEFENDER_HP_AREA.png', 'en': './assets/en/exercise/DEFENDER_HP_AREA.png', 'jp': './assets/jp/exercise/DEFENDER_HP_AREA.png', 'tw': './assets/tw/exercise/DEFENDER_HP_AREA.png'}) EQUIP_EDIT_ACTIVE = Button(area={'cn': (51, 608, 245, 668), 'en': (50, 607, 247, 670), 'jp': (53, 610, 245, 667), 'tw': (51, 607, 247, 668)}, color={'cn': (191, 159, 109), 'en': (186, 157, 105), 'jp': (192, 159, 109), 'tw': (191, 159, 109)}, button={'cn': (51, 608, 245, 668), 'en': (50, 607, 247, 670), 'jp': (53, 610, 245, 667), 'tw': (51, 607, 247, 668)}, file={'cn': './assets/cn/exercise/EQUIP_EDIT_ACTIVE.png', 'en': './assets/en/exercise/EQUIP_EDIT_ACTIVE.png', 'jp': './assets/jp/exercise/EQUIP_EDIT_ACTIVE.png', 'tw': './assets/tw/exercise/EQUIP_EDIT_ACTIVE.png'}) EQUIP_EDIT_INACTIVE = Button(area={'cn': (51, 608, 246, 667), 'en': (50, 607, 247, 670), 'jp': (50, 610, 244, 668), 'tw': (50, 608, 246, 669)}, color={'cn': (89, 112, 158), 'en': (88, 111, 156), 'jp': (90, 113, 160), 'tw': (92, 115, 160)}, button={'cn': (51, 608, 246, 667), 'en': (50, 607, 247, 670), 'jp': (50, 610, 244, 668), 'tw': (50, 608, 246, 669)}, file={'cn': './assets/cn/exercise/EQUIP_EDIT_INACTIVE.png', 'en': './assets/en/exercise/EQUIP_EDIT_INACTIVE.png', 'jp': './assets/jp/exercise/EQUIP_EDIT_INACTIVE.png', 'tw': './assets/tw/exercise/EQUIP_EDIT_INACTIVE.png'}) -EQUIP_ENTER = Button(area={'cn': (351, 446, 361, 456), 'en': (351, 446, 361, 456), 'jp': (351, 446, 361, 456), 'tw': (351, 446, 361, 456)}, color={'cn': (252, 251, 252), 'en': (252, 251, 252), 'jp': (252, 251, 252), 'tw': (252, 251, 252)}, button={'cn': (351, 446, 361, 456), 'en': (351, 446, 361, 456), 'jp': (351, 446, 361, 456), 'tw': (351, 446, 361, 456)}, file={'cn': './assets/cn/exercise/EQUIP_ENTER.png', 'en': './assets/en/exercise/EQUIP_ENTER.png', 'jp': './assets/jp/exercise/EQUIP_ENTER.png', 'tw': './assets/tw/exercise/EQUIP_ENTER.png'}) +EQUIP_ENTER = Button(area={'cn': (432, 283, 442, 293), 'en': (432, 283, 442, 293), 'jp': (432, 283, 442, 293), 'tw': (432, 283, 442, 293)}, color={'cn': (207, 206, 206), 'en': (207, 206, 206), 'jp': (207, 206, 206), 'tw': (207, 206, 206)}, button={'cn': (432, 283, 442, 293), 'en': (432, 283, 442, 293), 'jp': (432, 283, 442, 293), 'tw': (432, 283, 442, 293)}, file={'cn': './assets/cn/exercise/EQUIP_ENTER.png', 'en': './assets/en/exercise/EQUIP_ENTER.png', 'jp': './assets/jp/exercise/EQUIP_ENTER.png', 'tw': './assets/tw/exercise/EQUIP_ENTER.png'}) +EQUIP_ENTER_NEW = Button(area={'cn': (432, 283, 442, 293), 'en': (432, 283, 442, 293), 'jp': (432, 283, 442, 293), 'tw': (432, 283, 442, 293)}, color={'cn': (207, 206, 206), 'en': (207, 206, 206), 'jp': (207, 206, 206), 'tw': (207, 206, 206)}, button={'cn': (432, 283, 442, 293), 'en': (432, 283, 442, 293), 'jp': (432, 283, 442, 293), 'tw': (432, 283, 442, 293)}, file={'cn': './assets/cn/exercise/EQUIP_ENTER_NEW.png', 'en': './assets/en/exercise/EQUIP_ENTER_NEW.png', 'jp': './assets/jp/exercise/EQUIP_ENTER_NEW.png', 'tw': './assets/tw/exercise/EQUIP_ENTER_NEW.png'}) +EQUIP_ENTER_OLD = Button(area={'cn': (351, 446, 361, 456), 'en': (351, 446, 361, 456), 'jp': (351, 446, 361, 456), 'tw': (351, 446, 361, 456)}, color={'cn': (252, 251, 252), 'en': (252, 251, 252), 'jp': (252, 251, 252), 'tw': (252, 251, 252)}, button={'cn': (351, 446, 361, 456), 'en': (351, 446, 361, 456), 'jp': (351, 446, 361, 456), 'tw': (351, 446, 361, 456)}, file={'cn': './assets/cn/exercise/EQUIP_ENTER_OLD.png', 'en': './assets/en/exercise/EQUIP_ENTER_OLD.png', 'jp': './assets/jp/exercise/EQUIP_ENTER_OLD.png', 'tw': './assets/tw/exercise/EQUIP_ENTER_OLD.png'}) EXERCISE_PREPARATION = Button(area={'cn': (543, 539, 741, 599), 'en': (541, 537, 743, 601), 'jp': (549, 543, 736, 595), 'tw': (542, 539, 742, 600)}, color={'cn': (235, 186, 114), 'en': (234, 182, 102), 'jp': (235, 184, 111), 'tw': (236, 187, 117)}, button={'cn': (543, 539, 741, 599), 'en': (541, 537, 743, 601), 'jp': (549, 543, 736, 595), 'tw': (542, 539, 742, 600)}, file={'cn': './assets/cn/exercise/EXERCISE_PREPARATION.png', 'en': './assets/en/exercise/EXERCISE_PREPARATION.png', 'jp': './assets/jp/exercise/EXERCISE_PREPARATION.png', 'tw': './assets/tw/exercise/EXERCISE_PREPARATION.png'}) NEW_OPPONENT = Button(area={'cn': (1065, 340, 1204, 382), 'en': (1064, 339, 1205, 384), 'jp': (1064, 339, 1204, 383), 'tw': (1066, 342, 1203, 381)}, color={'cn': (129, 166, 220), 'en': (128, 165, 221), 'jp': (131, 165, 220), 'tw': (138, 172, 222)}, button={'cn': (1065, 340, 1204, 382), 'en': (1064, 339, 1205, 384), 'jp': (1064, 339, 1204, 383), 'tw': (1066, 342, 1203, 381)}, file={'cn': './assets/cn/exercise/NEW_OPPONENT.png', 'en': './assets/en/exercise/NEW_OPPONENT.png', 'jp': './assets/jp/exercise/NEW_OPPONENT.png', 'tw': './assets/tw/exercise/NEW_OPPONENT.png'}) OCR_EXERCISE_REMAIN = Button(area={'cn': (1153, 140, 1178, 165), 'en': (1153, 140, 1178, 165), 'jp': (1153, 140, 1178, 165), 'tw': (1153, 140, 1178, 165)}, color={'cn': (96, 132, 113), 'en': (96, 132, 113), 'jp': (96, 132, 113), 'tw': (96, 132, 113)}, button={'cn': (1153, 140, 1178, 165), 'en': (1153, 140, 1178, 165), 'jp': (1153, 140, 1178, 165), 'tw': (1153, 140, 1178, 165)}, file={'cn': './assets/cn/exercise/OCR_EXERCISE_REMAIN.png', 'en': './assets/en/exercise/OCR_EXERCISE_REMAIN.png', 'jp': './assets/jp/exercise/OCR_EXERCISE_REMAIN.png', 'tw': './assets/tw/exercise/OCR_EXERCISE_REMAIN.png'}) diff --git a/module/exercise/assets_override.py b/module/exercise/assets_override.py new file mode 100644 index 000000000..00476ec90 --- /dev/null +++ b/module/exercise/assets_override.py @@ -0,0 +1,52 @@ +from functools import wraps + +import module.exercise.assets as exer_assets + +g_exer_assets_ver = "new" + + +def exer_override_to_new(): + global g_exer_assets_ver + if g_exer_assets_ver == "new": + return + + exer_assets.EQUIP_ENTER = exer_assets.EQUIP_ENTER_NEW + + +def exer_override_to_old(): + global g_exer_assets_ver + if g_exer_assets_ver == "old": + return + + exer_assets.EQUIP_ENTER = exer_assets.EQUIP_ENTER_OLD + + +def exer_assets_override(ver: str = "old"): + """ + Args: + ver (str): "old" or "new" + """ + + def deco(func): + @wraps(func) + def wrapped_function(*args, **kwargs): + # switch to target ver + if ver == "old": + exer_override_to_old() + elif ver == "new": + exer_override_to_new() + else: + raise TypeError(f"Unknown exerment assets ver: {ver}") + res = func(*args, **kwargs) + # switch back + if ver == "old": + exer_override_to_new() + elif ver == "new": + exer_override_to_old() + else: + raise TypeError(f"Unknown exerment assets ver: {ver}") + return res + + return wrapped_function + + return deco diff --git a/module/exercise/combat.py b/module/exercise/combat.py index 3f66c511e..826cad1f5 100644 --- a/module/exercise/combat.py +++ b/module/exercise/combat.py @@ -6,10 +6,17 @@ from module.exercise.opponent import OPPONENT, OpponentChoose from module.ui.assets import EXERCISE_CHECK -class ExerciseCombat(HpDaemon, OpponentChoose, ExerciseEquipment, Combat): +class ExerciseCombat(HpDaemon, OpponentChoose, ExerciseEquipment): def _in_exercise(self): return self.appear(EXERCISE_CHECK, offset=(20, 20)) + def is_combat_executing(self): + """ + Returns: + bool: + """ + return self.appear(PAUSE) and np.max(self.image_crop(PAUSE_DOUBLE_CHECK)) < 153 + def _combat_preparation(self, skip_first_screenshot=True): logger.info('Combat preparation') self.device.stuck_record_clear() @@ -24,15 +31,11 @@ class ExerciseCombat(HpDaemon, OpponentChoose, ExerciseEquipment, Combat): # self.equipment_take_on() pass - # Power limit check - from module.gg_handler.gg_handler import GGHandler - GGHandler(config=self.config, device=self.device).power_limit('Exercise') - self.device.click(BATTLE_PREPARATION) continue # End - if self.is_combat_executing(): + if self.appear(PAUSE): break def _combat_execute(self): @@ -80,19 +83,16 @@ class ExerciseCombat(HpDaemon, OpponentChoose, ExerciseEquipment, Combat): # Quit if self.appear_then_click(QUIT_CONFIRM, offset=(20, 20), interval=5): - pause_interval.reset() success = False end = True continue if self.appear_then_click(QUIT_RECONFIRM, offset=(20, 20), interval=5): self.interval_reset(QUIT_CONFIRM) - pause_interval.reset() continue if not end: if self._at_low_hp(image=self.device.image): logger.info('Exercise quit') - if pause_interval.reached() and self.is_combat_executing(): - self.device.click(PAUSE) + if pause_interval.reached() and self.appear_then_click(PAUSE): pause_interval.reset() continue else: @@ -174,15 +174,15 @@ class ExerciseCombat(HpDaemon, OpponentChoose, ExerciseEquipment, Combat): return False self._choose_opponent(0) - super().equipment_take_off() + self.equipment_take_off() self._preparation_quit() - # def equipment_take_on(self): - # if self.config.EXERCISE_FLEET_EQUIPMENT is None: - # return False - # if self.equipment_has_take_on: - # return False - # - # self._choose_opponent(0) - # super().equipment_take_on() - # self._preparation_quit() + def equipment_take_on(self): + if self.config.EXERCISE_FLEET_EQUIPMENT is None: + return False + if self.equipment_has_take_on: + return False + + self._choose_opponent(0) + super().equipment_take_on() + self._preparation_quit() diff --git a/module/exercise/equipment.py b/module/exercise/equipment.py index d77429346..4d66b26e6 100644 --- a/module/exercise/equipment.py +++ b/module/exercise/equipment.py @@ -1,10 +1,10 @@ from module.base.timer import Timer from module.combat.assets import BATTLE_PREPARATION -from module.equipment.equipment import Equipment +from module.equipment.equipment_change import EquipmentChange from module.exercise.assets import * -class ExerciseEquipment(Equipment): +class ExerciseEquipment(EquipmentChange): def _active_edit(self): timer = Timer(5) while 1: @@ -32,23 +32,12 @@ class ExerciseEquipment(Equipment): break def equipment_take_on(self): - if self.config.EXERCISE_FLEET_EQUIPMENT is None: - return False - if self.equipment_has_take_on: - return False - self._active_edit() - super().equipment_take_on(enter=EQUIP_ENTER, out=BATTLE_PREPARATION, fleet=self.config.EXERCISE_FLEET_EQUIPMENT) + self.fleet_equipment_take_on_preset(preset_record=self.config.EXERCISE_FLEET_EQUIPMENT, enter=EQUIP_ENTER, + long_click=True, out=BATTLE_PREPARATION) self._inactive_edit() - return True def equipment_take_off(self): - if self.config.EXERCISE_FLEET_EQUIPMENT is None: - return False - if not self.equipment_has_take_on: - return False - self._active_edit() - super().equipment_take_off(enter=EQUIP_ENTER, out=BATTLE_PREPARATION, fleet=self.config.EXERCISE_FLEET_EQUIPMENT) + self.fleet_equipment_take_off(enter=EQUIP_ENTER, long_click=True, out=BATTLE_PREPARATION) self._inactive_edit() - return True diff --git a/module/hard/equipment.py b/module/hard/equipment.py index 2506baa51..59fbc7d81 100644 --- a/module/hard/equipment.py +++ b/module/hard/equipment.py @@ -1,17 +1,19 @@ -from module.equipment.equipment import Equipment +from module.equipment.equipment_change import EquipmentChange from module.hard.assets import * from module.map.assets import * -class HardEquipment(Equipment): +class HardEquipment(EquipmentChange): + def equipment_take_on(self): if self.config.FLEET_HARD_EQUIPMENT is None: return False if self.equipment_has_take_on: return False - enter = EQUIP_ENTER_1 if self.config.FLEET_HARD == 1 else EQUIP_ENTER_2 - super().equipment_take_on(enter=enter, out=FLEET_PREPARATION, fleet=self.config.FLEET_HARD_EQUIPMENT) + enter = EQUIP_ENTER_1 if self.config.Hard_HardFleet == 1 else EQUIP_ENTER_2 + self.fleet_equipment_take_on_preset(preset_record=self.config.FLEET_HARD_EQUIPMENT, enter=enter, + long_click=True, out=FLEET_PREPARATION) return True def equipment_take_off(self): @@ -20,6 +22,6 @@ class HardEquipment(Equipment): if not self.equipment_has_take_on: return False - enter = EQUIP_ENTER_1 if self.config.FLEET_HARD == 1 else EQUIP_ENTER_2 - super().equipment_take_off(enter=enter, out=FLEET_PREPARATION, fleet=self.config.FLEET_HARD_EQUIPMENT) + enter = EQUIP_ENTER_1 if self.config.Hard_HardFleet == 1 else EQUIP_ENTER_2 + self.fleet_equipment_take_off(enter=enter, long_click=True, out=FLEET_PREPARATION) return True diff --git a/module/retire/dock.py b/module/retire/dock.py index 2731179b7..3fad7c8d9 100644 --- a/module/retire/dock.py +++ b/module/retire/dock.py @@ -1,13 +1,13 @@ from module.base.button import ButtonGrid from module.base.decorator import cached_property from module.base.timer import Timer -from module.equipment.equipment import Equipment from module.logger import logger from module.ocr.ocr import DigitCounter from module.retire.assets import * from module.ui.scroll import Scroll from module.ui.setting import Setting from module.ui.switch import Switch +from module.ui.ui import UI DOCK_SORTING = Switch('Dork_sorting') DOCK_SORTING.add_status('Ascending', check_button=SORT_ASC, click_button=SORTING_CLICK) @@ -28,7 +28,7 @@ DOCK_SCROLL = Scroll(DOCK_SCROLL, color=(247, 211, 66), name='DOCK_SCROLL') OCR_DOCK_SELECTED = DigitCounter(DOCK_SELECTED, threshold=64, name='OCR_DOCK_SELECTED') -class Dock(Equipment): +class Dock(UI): def handle_dock_cards_loading(self): # Poor implementation. self.device.sleep((1, 1.5))