mirror of
https://github.com/sui-feng-cb/AzurLaneAutoScript1.git
synced 2026-07-13 10:58:02 +08:00
Merge branch 'master' of https://github.com/LmeSzinc/AzurLaneAutoScript
This commit is contained in:
@@ -36,6 +36,14 @@ EQUIP_TAKE_ON_1 = Button(area={'cn': (907, 338, 991, 431), 'en': (907, 338, 991,
|
||||
EQUIP_TAKE_ON_2 = Button(area={'cn': (866, 511, 950, 604), 'en': (866, 511, 950, 604), 'jp': (866, 511, 950, 604), 'tw': (866, 511, 950, 604)}, color={'cn': (117, 118, 127), 'en': (117, 118, 127), 'jp': (117, 118, 127), 'tw': (117, 118, 127)}, button={'cn': (866, 511, 950, 604), 'en': (866, 511, 950, 604), 'jp': (866, 511, 950, 604), 'tw': (866, 511, 950, 604)}, file={'cn': './assets/cn/equipment/EQUIP_TAKE_ON_2.png', 'en': './assets/en/equipment/EQUIP_TAKE_ON_2.png', 'jp': './assets/jp/equipment/EQUIP_TAKE_ON_2.png', 'tw': './assets/tw/equipment/EQUIP_TAKE_ON_2.png'})
|
||||
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_1_BACKLINE_1 = Button(area={'cn': (412, 195, 456, 239), 'en': (412, 195, 456, 239), 'jp': (412, 195, 456, 239), 'tw': (412, 195, 456, 239)}, color={'cn': (76, 67, 66), 'en': (76, 67, 66), 'jp': (76, 67, 66), 'tw': (76, 67, 66)}, button={'cn': (412, 195, 456, 239), 'en': (412, 195, 456, 239), 'jp': (412, 195, 456, 239), 'tw': (412, 195, 456, 239)}, file={'cn': './assets/cn/equipment/FLEET_1_BACKLINE_1.png', 'en': './assets/en/equipment/FLEET_1_BACKLINE_1.png', 'jp': './assets/jp/equipment/FLEET_1_BACKLINE_1.png', 'tw': './assets/tw/equipment/FLEET_1_BACKLINE_1.png'})
|
||||
FLEET_1_BACKLINE_3 = Button(area={'cn': (616, 195, 659, 238), 'en': (616, 195, 659, 238), 'jp': (616, 195, 659, 238), 'tw': (616, 195, 659, 238)}, color={'cn': (62, 62, 67), 'en': (62, 62, 67), 'jp': (62, 62, 67), 'tw': (62, 62, 67)}, button={'cn': (616, 195, 659, 238), 'en': (616, 195, 659, 238), 'jp': (616, 195, 659, 238), 'tw': (616, 195, 659, 238)}, file={'cn': './assets/cn/equipment/FLEET_1_BACKLINE_3.png', 'en': './assets/en/equipment/FLEET_1_BACKLINE_3.png', 'jp': './assets/jp/equipment/FLEET_1_BACKLINE_3.png', 'tw': './assets/tw/equipment/FLEET_1_BACKLINE_3.png'})
|
||||
FLEET_1_VANGUARD_1 = Button(area={'cn': (728, 195, 770, 237), 'en': (728, 195, 770, 237), 'jp': (728, 195, 770, 237), 'tw': (728, 195, 770, 237)}, color={'cn': (54, 57, 63), 'en': (54, 57, 63), 'jp': (54, 57, 63), 'tw': (54, 57, 63)}, button={'cn': (728, 195, 770, 237), 'en': (728, 195, 770, 237), 'jp': (728, 195, 770, 237), 'tw': (728, 195, 770, 237)}, file={'cn': './assets/cn/equipment/FLEET_1_VANGUARD_1.png', 'en': './assets/en/equipment/FLEET_1_VANGUARD_1.png', 'jp': './assets/jp/equipment/FLEET_1_VANGUARD_1.png', 'tw': './assets/tw/equipment/FLEET_1_VANGUARD_1.png'})
|
||||
FLEET_1_VANGUARD_3 = Button(area={'cn': (932, 195, 974, 237), 'en': (932, 195, 974, 237), 'jp': (932, 195, 974, 237), 'tw': (932, 195, 974, 237)}, color={'cn': (53, 55, 62), 'en': (53, 55, 62), 'jp': (53, 55, 62), 'tw': (53, 55, 62)}, button={'cn': (932, 195, 974, 237), 'en': (932, 195, 974, 237), 'jp': (932, 195, 974, 237), 'tw': (932, 195, 974, 237)}, file={'cn': './assets/cn/equipment/FLEET_1_VANGUARD_3.png', 'en': './assets/en/equipment/FLEET_1_VANGUARD_3.png', 'jp': './assets/jp/equipment/FLEET_1_VANGUARD_3.png', 'tw': './assets/tw/equipment/FLEET_1_VANGUARD_3.png'})
|
||||
FLEET_2_BACKLINE_1 = Button(area={'cn': (412, 309, 455, 352), 'en': (412, 309, 455, 352), 'jp': (412, 309, 455, 352), 'tw': (412, 309, 455, 352)}, color={'cn': (73, 64, 63), 'en': (73, 64, 63), 'jp': (73, 64, 63), 'tw': (73, 64, 63)}, button={'cn': (412, 309, 455, 352), 'en': (412, 309, 455, 352), 'jp': (412, 309, 455, 352), 'tw': (412, 309, 455, 352)}, file={'cn': './assets/cn/equipment/FLEET_2_BACKLINE_1.png', 'en': './assets/en/equipment/FLEET_2_BACKLINE_1.png', 'jp': './assets/jp/equipment/FLEET_2_BACKLINE_1.png', 'tw': './assets/tw/equipment/FLEET_2_BACKLINE_1.png'})
|
||||
FLEET_2_BACKLINE_3 = Button(area={'cn': (616, 309, 659, 352), 'en': (616, 309, 659, 352), 'jp': (616, 309, 659, 352), 'tw': (616, 309, 659, 352)}, color={'cn': (51, 52, 57), 'en': (51, 52, 57), 'jp': (51, 52, 57), 'tw': (51, 52, 57)}, button={'cn': (616, 309, 659, 352), 'en': (616, 309, 659, 352), 'jp': (616, 309, 659, 352), 'tw': (616, 309, 659, 352)}, file={'cn': './assets/cn/equipment/FLEET_2_BACKLINE_3.png', 'en': './assets/en/equipment/FLEET_2_BACKLINE_3.png', 'jp': './assets/jp/equipment/FLEET_2_BACKLINE_3.png', 'tw': './assets/tw/equipment/FLEET_2_BACKLINE_3.png'})
|
||||
FLEET_2_VANGUARD_1 = Button(area={'cn': (729, 310, 770, 351), 'en': (729, 310, 770, 351), 'jp': (729, 310, 770, 351), 'tw': (729, 310, 770, 351)}, color={'cn': (52, 54, 61), 'en': (52, 54, 61), 'jp': (52, 54, 61), 'tw': (52, 54, 61)}, button={'cn': (729, 310, 770, 351), 'en': (729, 310, 770, 351), 'jp': (729, 310, 770, 351), 'tw': (729, 310, 770, 351)}, file={'cn': './assets/cn/equipment/FLEET_2_VANGUARD_1.png', 'en': './assets/en/equipment/FLEET_2_VANGUARD_1.png', 'jp': './assets/jp/equipment/FLEET_2_VANGUARD_1.png', 'tw': './assets/tw/equipment/FLEET_2_VANGUARD_1.png'})
|
||||
FLEET_2_VANGUARD_3 = Button(area={'cn': (932, 309, 974, 351), 'en': (932, 309, 974, 351), 'jp': (932, 309, 974, 351), 'tw': (932, 309, 974, 351)}, color={'cn': (51, 54, 62), 'en': (51, 54, 62), 'jp': (51, 54, 62), 'tw': (51, 54, 62)}, button={'cn': (932, 309, 974, 351), 'en': (932, 309, 974, 351), 'jp': (932, 309, 974, 351), 'tw': (932, 309, 974, 351)}, file={'cn': './assets/cn/equipment/FLEET_2_VANGUARD_3.png', 'en': './assets/en/equipment/FLEET_2_VANGUARD_3.png', 'jp': './assets/jp/equipment/FLEET_2_VANGUARD_3.png', 'tw': './assets/tw/equipment/FLEET_2_VANGUARD_3.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_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'})
|
||||
@@ -50,6 +58,8 @@ FLEET_ENTER_FLAGSHIP_HARD_1 = Button(area={'cn': (593, 173, 681, 261), 'en': (59
|
||||
FLEET_ENTER_FLAGSHIP_HARD_2 = Button(area={'cn': (594, 287, 681, 374), 'en': (594, 287, 681, 374), 'jp': (594, 287, 681, 374), 'tw': (594, 287, 681, 374)}, color={'cn': (39, 45, 47), 'en': (39, 45, 47), 'jp': (39, 45, 47), 'tw': (39, 45, 47)}, button={'cn': (594, 287, 681, 374), 'en': (594, 287, 681, 374), 'jp': (594, 287, 681, 374), 'tw': (594, 287, 681, 374)}, file={'cn': './assets/cn/equipment/FLEET_ENTER_FLAGSHIP_HARD_2.png', 'en': './assets/cn/equipment/FLEET_ENTER_FLAGSHIP_HARD_2.png', 'jp': './assets/cn/equipment/FLEET_ENTER_FLAGSHIP_HARD_2.png', 'tw': './assets/cn/equipment/FLEET_ENTER_FLAGSHIP_HARD_2.png'})
|
||||
FLEET_ENTER_HARD_1 = Button(area={'cn': (909, 173, 996, 260), 'en': (909, 173, 996, 260), 'jp': (909, 173, 996, 260), 'tw': (909, 173, 996, 260)}, color={'cn': (43, 47, 52), 'en': (43, 47, 52), 'jp': (43, 47, 52), 'tw': (43, 47, 52)}, button={'cn': (909, 173, 996, 260), 'en': (909, 173, 996, 260), 'jp': (909, 173, 996, 260), 'tw': (909, 173, 996, 260)}, file={'cn': './assets/cn/equipment/FLEET_ENTER_HARD_1.png', 'en': './assets/cn/equipment/FLEET_ENTER_HARD_1.png', 'jp': './assets/cn/equipment/FLEET_ENTER_HARD_1.png', 'tw': './assets/cn/equipment/FLEET_ENTER_HARD_1.png'})
|
||||
FLEET_ENTER_HARD_2 = Button(area={'cn': (909, 287, 996, 374), 'en': (909, 287, 996, 374), 'jp': (909, 287, 996, 374), 'tw': (909, 287, 996, 374)}, color={'cn': (38, 44, 49), 'en': (38, 44, 49), 'jp': (38, 44, 49), 'tw': (38, 44, 49)}, button={'cn': (909, 287, 996, 374), 'en': (909, 287, 996, 374), 'jp': (909, 287, 996, 374), 'tw': (909, 287, 996, 374)}, file={'cn': './assets/cn/equipment/FLEET_ENTER_HARD_2.png', 'en': './assets/cn/equipment/FLEET_ENTER_HARD_2.png', 'jp': './assets/cn/equipment/FLEET_ENTER_HARD_2.png', 'tw': './assets/cn/equipment/FLEET_ENTER_HARD_2.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': (165, 193, 232), 'en': (165, 193, 232), 'jp': (165, 193, 232), 'tw': (165, 193, 232)}, 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, 277, 605, 291), 'en': (577, 277, 605, 291), 'jp': (577, 277, 605, 291), 'tw': (577, 277, 605, 291)}, color={'cn': (219, 196, 174), 'en': (219, 196, 174), 'jp': (219, 196, 174), 'tw': (219, 196, 174)}, 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_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'})
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import yaml
|
||||
|
||||
from module.base.utils import random_rectangle_point, point2str
|
||||
from module.base.timer import Timer
|
||||
from module.device.method.utils import HierarchyButton
|
||||
from module.equipment.assets import *
|
||||
from module.logger import logger
|
||||
@@ -9,6 +9,7 @@ from module.storage.assets import EQUIPMENT_FULL
|
||||
from module.storage.storage import StorageHandler
|
||||
|
||||
EMPTY_CODE = "MC8wLzAvMC8wXDA="
|
||||
U2_CONTROL_METHODS = {'uiautomator2', 'minitouch', 'MaaTouch'}
|
||||
EQUIPMENT_PREVIEW = list([
|
||||
EQUIPMENT_CODE_EQUIP_0,
|
||||
EQUIPMENT_CODE_EQUIP_1,
|
||||
@@ -21,6 +22,17 @@ EQUIPMENT_PREVIEW = list([
|
||||
class EquipmentCodeHandler(StorageHandler):
|
||||
last_code: str = None
|
||||
|
||||
def equipment_code_supported(self):
|
||||
method = self.config.Emulator_ControlMethod
|
||||
if method in U2_CONTROL_METHODS:
|
||||
return True
|
||||
|
||||
logger.warning(
|
||||
f"Equipment code requires uiautomator2 based control method, "
|
||||
f"current control method is {method}, skip equipment change"
|
||||
)
|
||||
return False
|
||||
|
||||
def get_code(self, name):
|
||||
try:
|
||||
config = {}
|
||||
@@ -61,14 +73,19 @@ class EquipmentCodeHandler(StorageHandler):
|
||||
if not self.appear(EMPTY_SHIP_R):
|
||||
break
|
||||
if TEMPLATE_BOGUE.match(self.device.image, scaling=1.46): # image has rotation
|
||||
logger.info("Bogue detected")
|
||||
return 'bogue'
|
||||
elif TEMPLATE_HERMES.match(self.device.image, scaling=124 / 89):
|
||||
logger.info("Hermes detected")
|
||||
return 'hermes'
|
||||
elif TEMPLATE_RANGER.match(self.device.image, scaling=4 / 3):
|
||||
logger.info("Ranger detected")
|
||||
return 'ranger'
|
||||
elif TEMPLATE_LANGLEY.match(self.device.image, scaling=25 / 21):
|
||||
logger.info("Langley detected")
|
||||
return 'langley'
|
||||
else:
|
||||
logger.warning("Unknown ship detected, assuming DD")
|
||||
return 'DD'
|
||||
|
||||
def _code_enter(self):
|
||||
@@ -81,7 +98,7 @@ class EquipmentCodeHandler(StorageHandler):
|
||||
if self.appear(EQUIPMENT_CODE_PAGE_CHECK, offset=(5, 5)):
|
||||
break
|
||||
|
||||
if self.appear_then_click(EQUIPMENT_CODE_ENTRANCE, offset=(5, 5), interval=2):
|
||||
if self.appear_then_click(EQUIPMENT_CODE_ENTRANCE, offset=(5, 5), interval=1):
|
||||
continue
|
||||
|
||||
def _code_exit(self):
|
||||
@@ -108,7 +125,7 @@ class EquipmentCodeHandler(StorageHandler):
|
||||
if not self.is_code_preview_loaded():
|
||||
return True
|
||||
|
||||
if self.appear_then_click(EQUIPMENT_CODE_CLEAR, offset=(5, 5)):
|
||||
if self.appear_then_click(EQUIPMENT_CODE_CLEAR, offset=(5, 5), interval=1):
|
||||
continue
|
||||
else:
|
||||
return False
|
||||
@@ -124,9 +141,7 @@ class EquipmentCodeHandler(StorageHandler):
|
||||
def appear_then_click(xpath):
|
||||
b = HierarchyButton(h, xpath)
|
||||
if b:
|
||||
point = random_rectangle_point(b.button)
|
||||
logger.info(f'Click {point2str(*point)} @ {b}')
|
||||
self.device.click_adb(*point)
|
||||
self.device.click(b)
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
@@ -144,18 +159,28 @@ class EquipmentCodeHandler(StorageHandler):
|
||||
|
||||
self.device.adb_shell(['input', 'keyevent', '4'])
|
||||
|
||||
def set_fastinput_ime(self):
|
||||
d = self.device.u2
|
||||
try:
|
||||
d.set_fastinput_ime(True)
|
||||
except Exception:
|
||||
logger.warning("FastInputIME not enabled, trying to enable it")
|
||||
self.fastinput_ime_enable()
|
||||
|
||||
def _code_input(self, code):
|
||||
logger.info(f"Code input: {code}")
|
||||
d = self.device.u2
|
||||
for _ in self.loop(timeout=10):
|
||||
click_timer = Timer(1, count=3)
|
||||
for _ in self.loop():
|
||||
name, shown = d.current_ime()
|
||||
if shown:
|
||||
if name != 'com.github.uiautomator/.FastInputIME':
|
||||
self.fastinput_ime_enable()
|
||||
self.set_fastinput_ime()
|
||||
continue
|
||||
else:
|
||||
break
|
||||
self.device.click(EQUIPMENT_CODE_TEXTBOX)
|
||||
if click_timer.reached_and_reset():
|
||||
self.device.click(EQUIPMENT_CODE_TEXTBOX)
|
||||
else:
|
||||
logger.warning("Equipment code load failed")
|
||||
return False
|
||||
@@ -216,19 +241,25 @@ class EquipmentCodeHandler(StorageHandler):
|
||||
return code
|
||||
|
||||
def code_clear(self, name=None):
|
||||
if not self.equipment_code_supported():
|
||||
return False
|
||||
|
||||
self._code_enter()
|
||||
if name is None:
|
||||
name = self.current_ship()
|
||||
if self.get_code(name=name) is None:
|
||||
self.last_code = self._code_export()
|
||||
self.set_code(name=name, code=self.last_code)
|
||||
self._code_apply(code=None)
|
||||
return self._code_apply(code=None)
|
||||
|
||||
def code_apply(self, name=None):
|
||||
if not self.equipment_code_supported():
|
||||
return False
|
||||
|
||||
self._code_enter()
|
||||
if name is None:
|
||||
name = self.current_ship()
|
||||
code = self.get_code(name=name)
|
||||
if code is None:
|
||||
code = self.last_code
|
||||
self._code_apply(code=code)
|
||||
return self._code_apply(code=code)
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
from module.logger import logger
|
||||
from module.base.timer import Timer
|
||||
from module.equipment.assets import *
|
||||
from module.equipment.equipment_change import EquipmentChange
|
||||
from module.ocr.ocr import Digit
|
||||
from module.ui.assets import FLEET_CHECK
|
||||
from module.ui.page import page_fleet
|
||||
|
||||
OCR_FLEET_INDEX = Digit(OCR_FLEET_INDEX, letter=(90, 154, 255), threshold=128, alphabet='123456')
|
||||
|
||||
|
||||
class FleetEquipment(EquipmentChange):
|
||||
def fleet_enter(self, fleet):
|
||||
self.ui_ensure(page_fleet)
|
||||
|
||||
# ui_ensure_index, set fleet
|
||||
letter = OCR_FLEET_INDEX
|
||||
next_button = FLEET_NEXT
|
||||
prev_button = FLEET_PREV
|
||||
interval = (0.2, 0.3)
|
||||
|
||||
retry = Timer(1, count=2)
|
||||
for _ in self.loop():
|
||||
current = letter.ocr(self.device.image)
|
||||
logger.attr("Index", current)
|
||||
|
||||
# ui_ensure_index but ignore default value 0
|
||||
# otherwise we would have 1 extra click switching from 1 to 4
|
||||
if current == 0:
|
||||
continue
|
||||
|
||||
diff = fleet - current
|
||||
if diff == 0:
|
||||
break
|
||||
|
||||
if retry.reached():
|
||||
button = next_button if diff > 0 else prev_button
|
||||
self.device.multi_click(button, n=abs(diff), interval=interval)
|
||||
retry.reset()
|
||||
|
||||
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)
|
||||
Reference in New Issue
Block a user