fix: Adapt to new APIs from upstream
# fuck LmeSzinc/AzurLaneAutoScript#3556 # fuck @Air111
4
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:
|
||||
|
||||
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 6.2 KiB |
BIN
assets/cn/equipment/EQUIP_1_NEW.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
assets/cn/equipment/EQUIP_1_OLD.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 6.2 KiB |
BIN
assets/cn/equipment/EQUIP_2_NEW.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
assets/cn/equipment/EQUIP_2_OLD.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 6.2 KiB |
BIN
assets/cn/equipment/EQUIP_3_NEW.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
assets/cn/equipment/EQUIP_3_OLD.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
assets/cn/equipment/FLEET_DETAIL.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 8.8 KiB |
BIN
assets/cn/equipment/FLEET_DETAIL_CHECK_NEW.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
assets/cn/equipment/FLEET_DETAIL_CHECK_OLD.png
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
assets/cn/equipment/FLEET_DETAIL_ENTER.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/cn/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 5.2 KiB |
BIN
assets/cn/equipment/FLEET_ENTER_FLAGSHIP_NEW.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
assets/cn/equipment/FLEET_ENTER_FLAGSHIP_OLD.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 4.6 KiB |
BIN
assets/cn/exercise/EQUIP_ENTER_NEW.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
assets/cn/exercise/EQUIP_ENTER_OLD.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
assets/en/equipment/FLEET_DETAIL.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 8.8 KiB |
BIN
assets/en/equipment/FLEET_DETAIL_CHECK_NEW.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
assets/en/equipment/FLEET_DETAIL_CHECK_OLD.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
assets/en/equipment/FLEET_DETAIL_ENTER.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/en/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 5.2 KiB |
BIN
assets/en/equipment/FLEET_ENTER_FLAGSHIP_NEW.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
assets/en/equipment/FLEET_ENTER_FLAGSHIP_OLD.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 4.6 KiB |
BIN
assets/en/exercise/EQUIP_ENTER_NEW.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
assets/en/exercise/EQUIP_ENTER_OLD.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
assets/jp/equipment/FLEET_DETAIL.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 8.8 KiB |
BIN
assets/jp/equipment/FLEET_DETAIL_CHECK_NEW.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
assets/jp/equipment/FLEET_DETAIL_CHECK_OLD.png
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
assets/jp/equipment/FLEET_DETAIL_ENTER.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/jp/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 5.2 KiB |
BIN
assets/jp/equipment/FLEET_ENTER_FLAGSHIP_NEW.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
assets/jp/equipment/FLEET_ENTER_FLAGSHIP_OLD.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 4.6 KiB |
BIN
assets/jp/exercise/EQUIP_ENTER_NEW.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
assets/jp/exercise/EQUIP_ENTER_OLD.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
assets/tw/equipment/FLEET_DETAIL.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 8.8 KiB |
BIN
assets/tw/equipment/FLEET_DETAIL_CHECK_NEW.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
assets/tw/equipment/FLEET_DETAIL_CHECK_OLD.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
assets/tw/equipment/FLEET_DETAIL_ENTER.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/tw/equipment/FLEET_DETAIL_ENTER_FLAGSHIP.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 5.2 KiB |
BIN
assets/tw/equipment/FLEET_ENTER_FLAGSHIP_NEW.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
assets/tw/equipment/FLEET_ENTER_FLAGSHIP_OLD.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 4.6 KiB |
BIN
assets/tw/exercise/EQUIP_ENTER_NEW.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
assets/tw/exercise/EQUIP_ENTER_OLD.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
@@ -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'})
|
||||
|
||||
60
module/equipment/assets_override.py
Normal 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
|
||||
@@ -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):
|
||||
...
|
||||
|
||||
@@ -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):
|
||||
...
|
||||
|
||||
@@ -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):
|
||||
...
|
||||
|
||||
@@ -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'})
|
||||
|
||||
52
module/exercise/assets_override.py
Normal 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
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||