mirror of
https://gitee.com/sui-feng-cb/AzurLaneAutoScript1
synced 2026-03-26 02:25:03 +08:00
Add: transport receive and start
This commit is contained in:
@@ -339,7 +339,7 @@ class IslandProjectRun(IslandUI):
|
|||||||
timeout.reset()
|
timeout.reset()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if self.appear_then_click(GET_ITEMS_ISLAND, offset=(20, 20), interval=2):
|
if self.handle_get_items():
|
||||||
enter = True
|
enter = True
|
||||||
self.interval_clear(ROLE_SELECT_ENTER)
|
self.interval_clear(ROLE_SELECT_ENTER)
|
||||||
timeout.reset()
|
timeout.reset()
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
from module.base.timer import Timer
|
||||||
from module.base.utils import area_offset
|
from module.base.utils import area_offset
|
||||||
from module.island.assets import *
|
from module.island.assets import *
|
||||||
from module.island.ui import IslandUI
|
from module.island.ui import IslandUI
|
||||||
@@ -80,6 +81,7 @@ class IslandTransport:
|
|||||||
def convert_to_running(self):
|
def convert_to_running(self):
|
||||||
if self.valid:
|
if self.valid:
|
||||||
self.status = 'running'
|
self.status = 'running'
|
||||||
|
self.can_start = False
|
||||||
self.create_time = datetime.now()
|
self.create_time = datetime.now()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -144,11 +146,95 @@ class IslandTransportRun(IslandUI):
|
|||||||
logger.info('trials of transport commission detect exhausted, stop')
|
logger.info('trials of transport commission detect exhausted, stop')
|
||||||
return commissions.select(valid=True)
|
return commissions.select(valid=True)
|
||||||
|
|
||||||
|
def transport_receive(self, skip_first_screenshot=True):
|
||||||
|
logger.hr('Island Transport', level=2)
|
||||||
|
self.device.click_record_clear()
|
||||||
|
self.interval_clear([GET_ITEMS_ISLAND, TRANSPORT_RECEIVE])
|
||||||
|
success = True
|
||||||
|
click_timer = Timer(5)
|
||||||
|
confirm_timer = Timer(1, count=2).start()
|
||||||
|
while 1:
|
||||||
|
if skip_first_screenshot:
|
||||||
|
skip_first_screenshot = False
|
||||||
|
else:
|
||||||
|
self.device.screenshot()
|
||||||
|
|
||||||
|
if self.handle_info_bar():
|
||||||
|
confirm_timer.reset()
|
||||||
|
continue
|
||||||
|
|
||||||
|
if self.appear_then_click(TRANSPORT_RECEIVE, offset=(-20, -20, 20, 400), interval=2):
|
||||||
|
success = False
|
||||||
|
self.interval_clear(GET_ITEMS_ISLAND)
|
||||||
|
confirm_timer.reset()
|
||||||
|
continue
|
||||||
|
|
||||||
|
if self.handle_get_items():
|
||||||
|
success = True
|
||||||
|
self.interval_clear(TRANSPORT_RECEIVE)
|
||||||
|
confirm_timer.reset()
|
||||||
|
continue
|
||||||
|
|
||||||
|
if self.island_in_transport():
|
||||||
|
if success and confirm_timer.reached():
|
||||||
|
break
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
confirm_timer.reset()
|
||||||
|
|
||||||
|
if click_timer.reached():
|
||||||
|
self.device.click(GET_ITEMS_ISLAND)
|
||||||
|
self.device.sleep(0.3)
|
||||||
|
click_timer.reset()
|
||||||
|
|
||||||
|
return success
|
||||||
|
|
||||||
|
def transport_start(self, comm, skip_first_screenshot=True):
|
||||||
|
logger.info('Transport commission start')
|
||||||
|
self.interval_clear([GET_ITEMS_ISLAND, TRANSPORT_START])
|
||||||
|
success = True
|
||||||
|
confirm_timer = Timer(1, count=2).start()
|
||||||
|
while 1:
|
||||||
|
if skip_first_screenshot:
|
||||||
|
skip_first_screenshot = False
|
||||||
|
else:
|
||||||
|
self.device.screenshot()
|
||||||
|
|
||||||
|
if self.appear_then_click(TRANSPORT_START, offset=comm.offset, interval=2):
|
||||||
|
success = False
|
||||||
|
self.interval_clear(GET_ITEMS_ISLAND)
|
||||||
|
confirm_timer.reset()
|
||||||
|
continue
|
||||||
|
|
||||||
|
if self.handle_get_items():
|
||||||
|
success = True
|
||||||
|
self.interval_clear(TRANSPORT_START)
|
||||||
|
confirm_timer.reset()
|
||||||
|
continue
|
||||||
|
|
||||||
|
if self.island_in_transport():
|
||||||
|
if success and confirm_timer.reached():
|
||||||
|
break
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
confirm_timer.reset()
|
||||||
|
return success
|
||||||
|
|
||||||
def island_transport_run(self):
|
def island_transport_run(self):
|
||||||
logger.hr('Island Transport Run', level=1)
|
logger.hr('Island Transport Run', level=1)
|
||||||
future_finish = []
|
future_finish = []
|
||||||
|
self.transport_receive()
|
||||||
commissions = self.transport_detect(trial=2)
|
commissions = self.transport_detect(trial=2)
|
||||||
|
|
||||||
|
comm_choose = commissions.select(status='pending', can_start=True)
|
||||||
|
for comm in comm_choose:
|
||||||
|
if self.transport_start(comm):
|
||||||
|
comm.convert_to_running()
|
||||||
|
|
||||||
|
logger.hr('Showing transport commission', level=2)
|
||||||
|
for comm in commissions:
|
||||||
|
logger.attr(f'Transport Commission', comm)
|
||||||
|
|
||||||
future_finish = sorted([f for f in commissions.select(status='running').get('finish_time') if f is not None])
|
future_finish = sorted([f for f in commissions.select(status='running').get('finish_time') if f is not None])
|
||||||
logger.info(f'Transport finish: {[str(f) for f in future_finish]}')
|
logger.info(f'Transport finish: {[str(f) for f in future_finish]}')
|
||||||
if not len(future_finish):
|
if not len(future_finish):
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class IslandUI(UI):
|
|||||||
Returns:
|
Returns:
|
||||||
bool: if in page ISLAND_TRANSPORT_CHECK
|
bool: if in page ISLAND_TRANSPORT_CHECK
|
||||||
"""
|
"""
|
||||||
return self.appear(ISLAND_TRANSPORT_CHECK, offset=(20, 20), interval=interval)
|
return self.match_template_color(ISLAND_TRANSPORT_CHECK, offset=(20, 20), interval=interval)
|
||||||
|
|
||||||
def island_management_enter(self):
|
def island_management_enter(self):
|
||||||
"""
|
"""
|
||||||
@@ -128,3 +128,8 @@ class IslandUI(UI):
|
|||||||
|
|
||||||
if self.appear_then_click(ISLAND_MANAGEMENT, offset=(20, 20), interval=2):
|
if self.appear_then_click(ISLAND_MANAGEMENT, offset=(20, 20), interval=2):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
def handle_get_items(self):
|
||||||
|
if self.appear_then_click(GET_ITEMS_ISLAND, offset=(20, 20), interval=2):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|||||||
Reference in New Issue
Block a user