1
0
mirror of https://github.com/sui-feng-cb/AzurLaneAutoScript1.git synced 2026-07-24 22:23:31 +08:00

Opt: share screenshot for oil and coin reading, and cache limit

This commit is contained in:
positnuec
2026-07-24 01:09:20 +08:00
parent a64efd6134
commit 6767c07d04
4 changed files with 98 additions and 111 deletions

View File

@@ -121,52 +121,51 @@ class AutoSearchCombat(MapOperation, Combat, CampaignStatus):
return checked
def auto_search_watch_oil(self, checked=False):
def _check_oil(self, oil):
"""
Watch oil.
This will set auto_search_oil_limit_triggered.
Check oil threshold and set auto_search_oil_limit_triggered.
"""
if oil == 0:
logger.warning('Oil not found')
return
if oil < max(500, self.config.StopCondition_OilLimit):
logger.info('Reach oil limit')
self.auto_search_oil_limit_triggered = True
else:
if self.auto_search_oil_limit_triggered:
logger.warning('auto_search_oil_limit_triggered but oil recovered, '
'probably because of wrong OCR result before')
self.auto_search_oil_limit_triggered = False
def _check_coin(self, coin):
"""
Check coin threshold and set auto_search_coin_limit_triggered.
"""
if coin == 0:
logger.warning('Coin not found')
return
limit = self.config.TaskBalancer_CoinLimit
if self.is_balancer_task():
if coin < limit:
logger.info('Reach coin limit')
self.auto_search_coin_limit_triggered = True
else:
self.auto_search_coin_limit_triggered = False
else:
if self.auto_search_coin_limit_triggered:
logger.warning('auto_search_coin_limit_triggered but coin recovered, '
'probably because of wrong OCR result before')
self.auto_search_coin_limit_triggered = False
def auto_search_watch_resources(self, checked=False):
"""
Watch oil and coin sharing a single screenshot.
"""
if not checked:
oil = self.get_oil()
if oil == 0:
logger.warning('Oil not found')
else:
if oil < max(500, self.config.StopCondition_OilLimit):
logger.info('Reach oil limit')
self.auto_search_oil_limit_triggered = True
else:
if self.auto_search_oil_limit_triggered:
logger.warning('auto_search_oil_limit_triggered but oil recovered, '
'probably because of wrong OCR result before')
self.auto_search_oil_limit_triggered = False
checked = True
return checked
def auto_search_watch_coin(self, checked=False):
"""
Watch coin.
This will set auto_search_coin_limit_triggered.
"""
if not checked:
limit = self.config.TaskBalancer_CoinLimit
coin = self.get_coin()
if coin == 0:
logger.warning('Coin not found')
else:
if self.is_balancer_task():
if coin < limit:
logger.info('Reach coin limit')
self.auto_search_coin_limit_triggered = True
else:
# Enough coin
self.auto_search_coin_limit_triggered = False
else:
if self.auto_search_coin_limit_triggered:
logger.warning('auto_search_coin_limit_triggered but coin recovered, '
'probably because of wrong OCR result before')
self.auto_search_coin_limit_triggered = False
checked = True
oil, coin = self.get_oil_and_coin()
self._check_oil(oil)
self._check_coin(coin)
checked = True
return checked
@@ -198,15 +197,13 @@ class AutoSearchCombat(MapOperation, Combat, CampaignStatus):
logger.info('Auto search moving')
self.device.stuck_record_clear()
checked_fleet = False
checked_oil = False
checked_coin = False
checked_resources = False
for _ in self.loop():
if self.is_auto_search_running():
checked_fleet = self.auto_search_watch_fleet(checked_fleet)
if not checked_oil or not checked_coin:
checked_oil = self.auto_search_watch_oil(checked_oil)
checked_coin = self.auto_search_watch_coin(checked_coin)
if not checked_resources:
checked_resources = self.auto_search_watch_resources(checked_resources)
if self.handle_retirement():
self.map_offensive_auto_search()
# Map offensive ends at is_combat_loading