2023-08-14 07:12:02 +00:00
|
|
|
import re
|
|
|
|
|
2023-08-22 19:00:45 +00:00
|
|
|
from module.base.utils import area_offset
|
|
|
|
from module.ocr.ocr import Digit, Ocr, OcrResultButton
|
2023-08-10 09:12:17 +00:00
|
|
|
from tasks.base.ui import UI
|
|
|
|
from tasks.rogue.assets.assets_rogue_ui import *
|
2023-10-05 10:52:55 +00:00
|
|
|
from tasks.rogue.keywords import RoguePath
|
2023-08-14 07:12:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
class RogueBonusOcr(Ocr):
|
|
|
|
def after_process(self, result):
|
|
|
|
result = super().after_process(result)
|
2023-09-12 10:39:23 +00:00
|
|
|
if self.lang == 'cn':
|
2023-08-14 07:12:02 +00:00
|
|
|
replace_pattern_dict = {
|
|
|
|
"[宇宝][宙审]": "宇宙",
|
|
|
|
}
|
|
|
|
for pat, replace in replace_pattern_dict.items():
|
|
|
|
result = re.sub(pat, replace, result)
|
|
|
|
return result
|
2023-08-10 09:12:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
class RogueUI(UI):
|
|
|
|
path: RoguePath
|
2023-08-12 17:04:54 +00:00
|
|
|
|
|
|
|
@property
|
|
|
|
def cosmic_fragment(self):
|
2023-08-20 16:05:50 +00:00
|
|
|
"""
|
|
|
|
Return valid result only when template appear
|
|
|
|
"""
|
2023-08-12 17:04:54 +00:00
|
|
|
if self.appear(COSMIC_FRAGMENT):
|
2023-08-20 16:05:50 +00:00
|
|
|
return Digit(OCR_COSMIC_FRAGMENT).ocr_single_line(self.device.image)
|
|
|
|
return 0
|
2023-08-10 09:12:17 +00:00
|
|
|
|
|
|
|
def is_page_choose_blessing(self):
|
2023-08-12 17:04:54 +00:00
|
|
|
return (self.image_color_count(PAGE_CHOOSE_BUFF, (245, 245, 245), count=200)
|
|
|
|
and self.appear(CHECK_BLESSING))
|
2023-08-10 09:12:17 +00:00
|
|
|
|
|
|
|
def is_page_choose_curio(self):
|
2023-08-12 07:15:25 +00:00
|
|
|
return self.appear(PAGE_CHOOSE_CURIO)
|
2023-08-14 07:12:02 +00:00
|
|
|
|
|
|
|
def is_page_choose_bonus(self):
|
|
|
|
return self.appear(PAGE_CHOOSE_BONUS)
|
2023-08-14 20:16:31 +00:00
|
|
|
|
|
|
|
def is_page_event(self):
|
|
|
|
return self.appear(PAGE_EVENT)
|
2023-08-22 19:00:45 +00:00
|
|
|
|
2023-08-31 07:54:36 +00:00
|
|
|
def handle_obtain_item_popup(self, interval=5) -> bool:
|
|
|
|
"""After selecting some curio (e.g. Sealing_Wax_of_*), there will be a popup after back to main page"""
|
|
|
|
if self.appear_then_click(OBTAIN_ITEM_POPUP, interval=interval):
|
|
|
|
return True
|
|
|
|
return False
|
|
|
|
|
2023-08-22 19:00:45 +00:00
|
|
|
def is_unrecorded(self, target: OcrResultButton, relative_area):
|
|
|
|
"""
|
|
|
|
To check a rogue keyword is not record in game index by finding template
|
|
|
|
"""
|
|
|
|
FLAG_UNRECORD.matched_button.search = area_offset(relative_area, target.area[:2])
|
|
|
|
return self.appear(FLAG_UNRECORD)
|