mirror of
https://github.com/wess09/AzurLaneAutoScript.git
synced 2026-05-14 06:58:22 +08:00
Merge branch 'dev' of https://github.com/wess09/AzurPilot into dev
This commit is contained in:
commit
cdbc5aef3d
@ -99,7 +99,11 @@ class OSMapOperation(MapOrderHandler, MissionHandler, PortHandler, StorageHandle
|
||||
# For JP only
|
||||
ocr = Ocr(MAP_NAME, lang='jp', letter=(157, 173, 192), threshold=127, name='OCR_OS_MAP_NAME')
|
||||
name = ocr.ocr(self.device.image)
|
||||
name = name.strip('\\/-—–-')
|
||||
name = name.replace(' ', '')
|
||||
# Normalize various dashes to standard hyphen
|
||||
import re
|
||||
name = re.sub(r'[\\/—–-−]', '-', name)
|
||||
name = name.strip('-')
|
||||
self.is_zone_name_hidden = '安全' in name
|
||||
# Remove punctuations
|
||||
for char in '・':
|
||||
@ -109,12 +113,15 @@ class OSMapOperation(MapOrderHandler, MissionHandler, PortHandler, StorageHandle
|
||||
name = name.split('異')[0]
|
||||
if 'セ' in name:
|
||||
name = name.split('セ')[0]
|
||||
# Remove '安全海域' or '秘密海域' at the end of jp ocr.
|
||||
name = _remove_zone_suffix(
|
||||
name,
|
||||
('安全海域', '秘密海域', '異常海域', '要塞海域', '安全', '秘密', '異常', '要塞'),
|
||||
trim_chars='-',
|
||||
)
|
||||
|
||||
if '-' in name:
|
||||
name = name.split('-')[0]
|
||||
else:
|
||||
# Remove '安全海域' or '秘密海域' at the end of jp ocr.
|
||||
name = _remove_zone_suffix(
|
||||
name,
|
||||
('安全海域', '秘密海域', '異常海域', '要塞海域', '安全', '秘密', '異常', '要塞'),
|
||||
)
|
||||
# Kanji '一', '力' and '卜' are not used, while Katakana 'ー', 'カ' and 'ト' are misread as Kanji sometimes.
|
||||
# Katakana 'ペ' may be misread as Hiragana 'ぺ'.
|
||||
name = name.replace('一', 'ー').replace('力', 'カ').replace('卜', 'ト').replace('ぺ', 'ペ')
|
||||
@ -132,17 +139,24 @@ class OSMapOperation(MapOrderHandler, MissionHandler, PortHandler, StorageHandle
|
||||
# For TW only
|
||||
ocr = Ocr(MAP_NAME, lang='tw', letter=(198, 215, 239), threshold=127, name='OCR_OS_MAP_NAME')
|
||||
name = ocr.ocr(self.device.image)
|
||||
name = name.strip('\\/-—–-')
|
||||
name = name.replace(' ', '')
|
||||
# Normalize various dashes to standard hyphen
|
||||
import re
|
||||
name = re.sub(r'[\\/—–-−一]', '-', name)
|
||||
name = name.strip('-')
|
||||
self.is_zone_name_hidden = '安全' in name
|
||||
# Remove '塞壬要塞海域'
|
||||
if '塞' in name:
|
||||
name = name.split('塞')[0]
|
||||
# Remove '安全海域', '隱秘海域', '深淵海域' at the end of tw ocr.
|
||||
name = _remove_zone_suffix(
|
||||
name,
|
||||
('安全海域', '隱秘海域', '深淵海域', '塞壬要塞海域', '安全', '隱秘', '深淵'),
|
||||
trim_chars='一-',
|
||||
)
|
||||
|
||||
if '-' in name:
|
||||
name = name.split('-')[0]
|
||||
else:
|
||||
# Remove '安全海域', '隱秘海域', '深淵海域' at the end of tw ocr.
|
||||
name = _remove_zone_suffix(
|
||||
name,
|
||||
('安全海域', '隱秘海域', '深淵海域', '塞壬要塞海域', '安全', '隱秘', '深淵'),
|
||||
)
|
||||
return name
|
||||
|
||||
@Config.when(SERVER=None)
|
||||
|
||||
@ -87,13 +87,13 @@ class Combat(Combat_, MapEventHandler):
|
||||
# self.emotion.reduce(fleet_index)
|
||||
break
|
||||
|
||||
def _get_exp_info_sleep(self):
|
||||
return (1.5, 2) if self.__os_combat_drop else (0.25, 0.5)
|
||||
|
||||
def handle_exp_info(self):
|
||||
if self.is_combat_executing():
|
||||
return False
|
||||
if self.__os_combat_drop:
|
||||
sleep = (1.5, 2)
|
||||
else:
|
||||
sleep = (0.25, 0.5)
|
||||
sleep = self._get_exp_info_sleep()
|
||||
if self.appear_then_click(EXP_INFO_S):
|
||||
self.device.sleep(sleep)
|
||||
return True
|
||||
@ -193,36 +193,38 @@ class Combat(Combat_, MapEventHandler):
|
||||
logger.info('Continuous combat detected')
|
||||
continue
|
||||
|
||||
def handle_auto_search_battle_status(self, drop=None):
|
||||
if self.appear(BATTLE_STATUS_C, interval=self.battle_status_click_interval):
|
||||
logger.warning('Battle Status C')
|
||||
# raise GameStuckError('Battle status C')
|
||||
def _handle_single_battle_status(self, status_button, status_letter, drop):
|
||||
if self.appear(status_button, interval=self.battle_status_click_interval):
|
||||
if status_letter == 'S':
|
||||
logger.info(f'Battle Status {status_letter}')
|
||||
else:
|
||||
logger.warning(f'Battle Status {status_letter}')
|
||||
if drop:
|
||||
drop.handle_add(self)
|
||||
else:
|
||||
self.device.sleep((0.25, 0.5))
|
||||
self.device.click(BATTLE_STATUS_C)
|
||||
return True
|
||||
if self.appear(BATTLE_STATUS_D, interval=self.battle_status_click_interval):
|
||||
logger.warning('Battle Status D')
|
||||
# raise GameStuckError('Battle Status D')
|
||||
if drop:
|
||||
drop.handle_add(self)
|
||||
else:
|
||||
self.device.sleep((0.25, 0.5))
|
||||
self.device.click(BATTLE_STATUS_D)
|
||||
self.device.click(status_button)
|
||||
return True
|
||||
return False
|
||||
|
||||
def handle_auto_search_battle_status(self, drop=None):
|
||||
for status_button, status_letter in [
|
||||
(BATTLE_STATUS_S, 'S'),
|
||||
(BATTLE_STATUS_A, 'A'),
|
||||
(BATTLE_STATUS_B, 'B'),
|
||||
(BATTLE_STATUS_C, 'C'),
|
||||
(BATTLE_STATUS_D, 'D'),
|
||||
]:
|
||||
if self._handle_single_battle_status(status_button, status_letter, drop):
|
||||
return True
|
||||
return False
|
||||
|
||||
def handle_auto_search_exp_info(self):
|
||||
if self.appear_then_click(EXP_INFO_C):
|
||||
self.device.sleep((0.25, 0.5))
|
||||
return True
|
||||
if self.appear_then_click(EXP_INFO_D):
|
||||
self.device.sleep((0.25, 0.5))
|
||||
return True
|
||||
|
||||
sleep = self._get_exp_info_sleep()
|
||||
for exp_info_button in [EXP_INFO_S, EXP_INFO_A, EXP_INFO_B, EXP_INFO_C, EXP_INFO_D]:
|
||||
if self.appear_then_click(exp_info_button):
|
||||
self.device.sleep(sleep)
|
||||
return True
|
||||
return False
|
||||
|
||||
def auto_search_combat(self, drop=None):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user