From 8452e91312bdccb1e14790fe5ae06667fa9a28b0 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Sun, 1 Oct 2023 16:26:07 +0800 Subject: [PATCH] Fix: Handle random suffix in plane name --- tasks/base/main_page.py | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/tasks/base/main_page.py b/tasks/base/main_page.py index b78086b96..96e9a6d43 100644 --- a/tasks/base/main_page.py +++ b/tasks/base/main_page.py @@ -40,6 +40,31 @@ class MainPage(PopupHandler): _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]: logger.info('check_lang_from_map_plane') lang_unknown = self.config.Emulator_GameLanguage == 'auto' @@ -52,12 +77,8 @@ class MainPage(PopupHandler): for lang in lang_list: logger.info(f'Try ocr in lang {lang}') - ocr = OcrPlaneName(OCR_MAP_NAME, lang=lang) - result = ocr.ocr_single_line(self.device.image) - keyword = ocr._match_result(result, keyword_classes=MapPlane, lang=lang) + keyword = self.get_plane(lang) if keyword is not None: - self.plane = keyword - logger.attr('CurrentPlane', self.plane) logger.info(f'check_lang_from_map_plane matched lang: {lang}') if lang_unknown or lang != server.lang: self.config.Emulator_GameLanguage = lang