Fix: Handle random suffix in plane name

This commit is contained in:
LmeSzinc 2023-10-01 16:26:07 +08:00
parent fdcd2feb47
commit 8452e91312

View File

@ -40,6 +40,31 @@ class MainPage(PopupHandler):
_lang_checked = False _lang_checked = False
def get_plane(self, lang=None) -> Optional[MapPlane]:
"""
Pages:
in: page_main
"""
if lang is None:
lang = server.lang
ocr = OcrPlaneName(OCR_MAP_NAME, lang=lang)
result = ocr.ocr_single_line(self.device.image)
# Try to match
keyword = ocr._match_result(result, keyword_classes=MapPlane, lang=lang)
if keyword is not None:
self.plane = keyword
logger.attr('CurrentPlane', keyword)
return keyword
# Try to remove suffix
for suffix in range(1, 5):
keyword = ocr._match_result(result[:-suffix], keyword_classes=MapPlane, lang=lang)
if keyword is not None:
self.plane = keyword
logger.attr('CurrentPlane', keyword)
return keyword
return None
def check_lang_from_map_plane(self) -> Optional[str]: def check_lang_from_map_plane(self) -> Optional[str]:
logger.info('check_lang_from_map_plane') logger.info('check_lang_from_map_plane')
lang_unknown = self.config.Emulator_GameLanguage == 'auto' lang_unknown = self.config.Emulator_GameLanguage == 'auto'
@ -52,12 +77,8 @@ class MainPage(PopupHandler):
for lang in lang_list: for lang in lang_list:
logger.info(f'Try ocr in lang {lang}') logger.info(f'Try ocr in lang {lang}')
ocr = OcrPlaneName(OCR_MAP_NAME, lang=lang) keyword = self.get_plane(lang)
result = ocr.ocr_single_line(self.device.image)
keyword = ocr._match_result(result, keyword_classes=MapPlane, lang=lang)
if keyword is not None: if keyword is not None:
self.plane = keyword
logger.attr('CurrentPlane', self.plane)
logger.info(f'check_lang_from_map_plane matched lang: {lang}') logger.info(f'check_lang_from_map_plane matched lang: {lang}')
if lang_unknown or lang != server.lang: if lang_unknown or lang != server.lang:
self.config.Emulator_GameLanguage = lang self.config.Emulator_GameLanguage = lang