mirror of
https://gitee.com/sui-feng-cb/AzurLaneAutoScript1
synced 2026-03-17 09:55:29 +08:00
Opt: use repair packs to repair ships
This commit is contained in:
@@ -22,7 +22,8 @@ from module.os.camera import OSCamera
|
||||
from module.os.map_base import OSCampaignMap
|
||||
from module.os_ash.ash import OSAsh
|
||||
from module.os_combat.combat import Combat
|
||||
from module.os_handler.assets import AUTO_SEARCH_REWARD, CLICK_SAFE_AREA, IN_MAP, PORT_ENTER
|
||||
from module.os_handler.assets import (AUTO_SEARCH_REWARD, CLICK_SAFE_AREA, IN_MAP, PORT_ENTER,
|
||||
STORAGE_REPAIR_ICON, TEMPLATE_STORAGE_SHIP_EMPTY)
|
||||
from module.os_shop.assets import PORT_SUPPLY_CHECK
|
||||
from module.ui.assets import BACK_ARROW
|
||||
|
||||
@@ -169,6 +170,9 @@ class OSFleet(OSCamera, Combat, Fleet, OSAsh):
|
||||
|
||||
return hp_grid
|
||||
|
||||
def _storage_hp_grid(self):
|
||||
return ButtonGrid(origin=(185, 553), delta=(167, 0), button_shape=(99, 4), grid_shape=(6, 1))
|
||||
|
||||
def hp_retreat_triggered(self):
|
||||
return False
|
||||
|
||||
@@ -196,6 +200,41 @@ class OSFleet(OSCamera, Combat, Fleet, OSAsh):
|
||||
|
||||
return self.hp
|
||||
|
||||
def _storage_hp_get(self):
|
||||
super().hp_get()
|
||||
if self.appear(STORAGE_REPAIR_ICON, offset=(20, 20)):
|
||||
need_repair = [not repair for repair in self.hp_has_ship]
|
||||
for index, repair in enumerate(need_repair):
|
||||
if repair:
|
||||
self._hp[self.fleet_current_index][index] = 0
|
||||
|
||||
ship_icon = self._hp_grid().crop((-29, -165, 106, -30))
|
||||
has_ship = [not TEMPLATE_STORAGE_SHIP_EMPTY.match(
|
||||
self.image_crop(button, copy=False)) for button in ship_icon.buttons]
|
||||
for index, ship in enumerate(has_ship):
|
||||
if ship:
|
||||
self._hp_has_ship[self.fleet_current_index][index] = True
|
||||
|
||||
self.need_repair = [all(repair) for repair in zip(need_repair, has_ship)]
|
||||
logger.attr('Repair icon', self.need_repair)
|
||||
logger.attr('HP', ' '.join(
|
||||
[str(int(data * 100)).rjust(3) + '%' if use else '____'
|
||||
for data, use in zip(self.hp, self.hp_has_ship)]))
|
||||
else:
|
||||
logger.attr('Repair icon', self.need_repair)
|
||||
|
||||
def storage_hp_get(self):
|
||||
"""
|
||||
Calculate current HP in page STORAGE_CHECK, also detects the wrench (Ship died, need to repair)
|
||||
"""
|
||||
origin = self._hp_grid
|
||||
self._hp_grid = self._storage_hp_grid
|
||||
try:
|
||||
self._storage_hp_get()
|
||||
finally:
|
||||
self._hp_grid = origin
|
||||
return self.hp
|
||||
|
||||
def lv_get(self, after_battle=False):
|
||||
pass
|
||||
|
||||
@@ -487,6 +526,18 @@ class OSFleet(OSCamera, Combat, Fleet, OSAsh):
|
||||
else:
|
||||
return False
|
||||
|
||||
def storage_fleet_set(self, index=1, skip_first_screenshot=True):
|
||||
"""
|
||||
Args:
|
||||
index (int): Target fleet_current_index
|
||||
skip_first_screenshot (bool):
|
||||
|
||||
Returns:
|
||||
bool: If switched.
|
||||
"""
|
||||
logger.hr(f'Fleet set to {index}')
|
||||
return self.storage_fleet_selector.ensure_to_be(index)
|
||||
|
||||
def parse_fleet_filter(self):
|
||||
"""
|
||||
Returns:
|
||||
|
||||
Reference in New Issue
Block a user