StarRailCopilot/tasks/rogue/blessing/utils.py

34 lines
1.1 KiB
Python
Raw Permalink Normal View History

import re
from module.base.base import ModuleBase
from module.base.utils import area_offset
from module.ocr.ocr import OcrResultButton
REGEX_PUNCTUATION = re.compile(r'[ ,.\'"“”,。:!??·•—/()()「」『』【】《》]')
def parse_name(n):
n = REGEX_PUNCTUATION.sub('', str(n)).lower()
return n
def get_regex_from_keyword_name(keyword, attr_name):
string = ""
for instance in keyword.instances.values():
if hasattr(instance, attr_name):
for name in instance.__getattribute__(attr_name):
string += f"{name}|"
# some pattern contain each other, make sure each pattern end with "-" or the end of string
return f"(?:({string[:-1]})(?:-|$))?"
def is_card_selected(main: ModuleBase, target: OcrResultButton, confirm_button):
"""
There is a white border if a blessing is selected.
For the enforce case, just check the confirm button turning to white
"""
if not target:
return main.image_color_count(confirm_button, (230, 230, 230))
top_border = area_offset(target.area, (0, -180))
return main.image_color_count(top_border, (255, 255, 255))