1
0
mirror of https://github.com/0O0o0oOoO00/Alas.git synced 2026-05-14 16:49:26 +08:00

fix: Adapt to new APIs from upstream

# fuck LmeSzinc/AzurLaneAutoScript#3556
# fuck @Air111
This commit is contained in:
LA_DI_DA
2024-05-19 19:59:03 +08:00
parent 85e4f8e15e
commit 0101eaf3e3
69 changed files with 668 additions and 83 deletions

View File

@@ -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:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -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'})

View File

@@ -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

View File

@@ -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):
...

View File

@@ -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):
...

View File

@@ -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):
...

View File

@@ -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'})

View File

@@ -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

View File

@@ -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()

View File

@@ -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

View File

@@ -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

View File

@@ -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))