重写领取邮件;tap_element并入tap
This commit is contained in:
parent
fd7b82892d
commit
4d01bf76cf
53 changed files with 206 additions and 178 deletions
|
@ -252,6 +252,8 @@ class RegularTaskPart(ConfModel):
|
|||
|
||||
check_mail_enable: bool = True
|
||||
"领取邮件奖励"
|
||||
delete_read_mail: bool = False
|
||||
"删除已读邮件"
|
||||
maa_enable: bool = True
|
||||
"日常任务"
|
||||
maa_gap: float = 3
|
||||
|
|
|
@ -18,17 +18,17 @@ def login_start(solver: BaseSolver):
|
|||
|
||||
@edge(Scene.CONFIRM, Scene.LOGIN_START)
|
||||
def confirm(solver: BaseSolver):
|
||||
solver.tap_element("confirm")
|
||||
solver.tap("confirm")
|
||||
|
||||
|
||||
@edge(Scene.NOTICE, Scene.INDEX)
|
||||
def close_notice(solver: BaseSolver):
|
||||
solver.tap_element("notice")
|
||||
solver.tap("notice")
|
||||
|
||||
|
||||
@edge(Scene.NETWORK_CHECK, Scene.LOGIN_START)
|
||||
def network_check_cancel(solver: BaseSolver):
|
||||
solver.tap_element("confirm")
|
||||
solver.tap("confirm")
|
||||
|
||||
|
||||
@edge(Scene.MOON_FESTIVAL, Scene.SIGN_IN_DAILY)
|
||||
|
@ -43,12 +43,12 @@ def story_stage(solver: BaseSolver):
|
|||
|
||||
@edge(Scene.STORY, Scene.STORY_SKIP)
|
||||
def skip_story(solver: BaseSolver):
|
||||
solver.tap_element("story_skip")
|
||||
solver.tap("story_skip")
|
||||
|
||||
|
||||
@edge(Scene.STORY_SKIP, Scene.OPERATOR_BEFORE)
|
||||
def skip_story_confirm(solver: BaseSolver):
|
||||
solver.tap_element("story_skip_confirm_dialog", x_rate=0.94)
|
||||
solver.tap("story_skip_confirm_dialog", x_rate=0.94)
|
||||
|
||||
|
||||
@edge(Scene.OPERATOR_DETAILS, Scene.OPERATOR_MANAGEMENT)
|
||||
|
|
|
@ -23,4 +23,4 @@ def friend_visiting_back(solver: BaseSolver):
|
|||
|
||||
@edge(Scene.BACK_TO_FRIEND_LIST, Scene.BUSINESS_CARD)
|
||||
def back_to_friend_confirm(solver: BaseSolver):
|
||||
solver.tap_element("double_confirm/main", x_rate=1)
|
||||
solver.tap("double_confirm/main", x_rate=1)
|
||||
|
|
|
@ -37,17 +37,17 @@ def back_to_index(solver: BaseSolver):
|
|||
|
||||
@edge(Scene.LEAVE_INFRASTRUCTURE, Scene.INDEX)
|
||||
def leave_infrastructure(solver: BaseSolver):
|
||||
solver.tap_element("double_confirm/main", x_rate=1)
|
||||
solver.tap("double_confirm/main", x_rate=1)
|
||||
|
||||
|
||||
@edge(Scene.DOWNLOAD_VOICE_RESOURCES, Scene.INDEX)
|
||||
def dont_download_voice(solver: BaseSolver):
|
||||
solver.tap_element("double_confirm/main", x_rate=0)
|
||||
solver.tap("double_confirm/main", x_rate=0)
|
||||
|
||||
|
||||
@edge(Scene.LOGIN_QUICKLY, Scene.INDEX)
|
||||
def login_quickly(solver: BaseSolver):
|
||||
solver.tap_element("login_awake")
|
||||
solver.tap("login_awake")
|
||||
|
||||
|
||||
@edge(Scene.LOGIN_CAPTCHA, Scene.INDEX)
|
||||
|
@ -63,7 +63,7 @@ def login_bilibili(solver: BaseSolver):
|
|||
|
||||
@edge(Scene.EXIT_GAME, Scene.INDEX)
|
||||
def exit_cancel(solver: BaseSolver):
|
||||
solver.tap_element("double_confirm/main", x_rate=0)
|
||||
solver.tap("double_confirm/main", x_rate=0)
|
||||
|
||||
|
||||
@edge(Scene.MATERIEL, Scene.INDEX)
|
||||
|
|
|
@ -9,9 +9,9 @@ from .utils import edge
|
|||
@edge(Scene.MISSION_DAILY, Scene.MISSION_WEEKLY)
|
||||
@edge(Scene.MISSION_TRAINEE, Scene.MISSION_WEEKLY)
|
||||
def mission_to_weekly(solver: BaseSolver):
|
||||
solver.tap_element("mission_weekly")
|
||||
solver.tap("mission_weekly")
|
||||
|
||||
|
||||
@edge(Scene.MISSION_TRAINEE, Scene.MISSION_DAILY)
|
||||
def mission_trainee_to_daily(solver: BaseSolver):
|
||||
solver.tap_element("mission_daily")
|
||||
solver.tap("mission_daily")
|
||||
|
|
|
@ -53,7 +53,7 @@ from .utils import edge
|
|||
@edge(Scene.OPERATOR_DETAILS, Scene.NAVIGATION_BAR)
|
||||
@edge(Scene.ROGUE_INDEX, Scene.NAVIGATION_BAR)
|
||||
def index_nav(solver: BaseSolver):
|
||||
solver.tap_element("nav_button")
|
||||
solver.tap("nav_button")
|
||||
|
||||
|
||||
# 不加从导航栏到基建首页的边,防止在基建内循环
|
||||
|
|
|
@ -24,17 +24,17 @@ def operation_back(solver: BaseSolver):
|
|||
|
||||
@edge(Scene.OPERATOR_FIGHT, Scene.OPERATOR_GIVEUP)
|
||||
def operation_fight(solver: BaseSolver):
|
||||
solver.tap_element("fight/gear")
|
||||
solver.tap("fight/gear")
|
||||
|
||||
|
||||
@edge(Scene.OPERATOR_GIVEUP, Scene.OPERATOR_FAILED)
|
||||
def operation_give_up(solver: BaseSolver):
|
||||
solver.tap_element("fight/give_up")
|
||||
solver.tap("fight/give_up")
|
||||
|
||||
|
||||
@edge(Scene.OPERATOR_FAULT_CONFIRM, Scene.OPERATOR_FAILED)
|
||||
def operation_fault_confirm(solver: BaseSolver):
|
||||
solver.tap_element("double_confirm/main", x_rate=1)
|
||||
solver.tap("double_confirm/main", x_rate=1)
|
||||
|
||||
|
||||
@edge(Scene.OPERATOR_FINISH, Scene.OPERATOR_BEFORE)
|
||||
|
|
|
@ -13,7 +13,7 @@ def recruit_result(solver: BaseSolver):
|
|||
|
||||
@edge(Scene.REFRESH_TAGS, Scene.RECRUIT_TAGS)
|
||||
def refresh_cancel(solver: BaseSolver):
|
||||
solver.tap_element("double_confirm/main", x_rate=0)
|
||||
solver.tap("double_confirm/main", x_rate=0)
|
||||
|
||||
|
||||
@edge(Scene.RECRUIT_TAGS, Scene.RECRUIT_MAIN)
|
||||
|
@ -23,4 +23,4 @@ def recruit_back(solver: BaseSolver):
|
|||
|
||||
@edge(Scene.SKIP, Scene.RECRUIT_AGENT)
|
||||
def skip(solver: BaseSolver):
|
||||
solver.tap_element("skip")
|
||||
solver.tap("skip")
|
||||
|
|
|
@ -37,7 +37,7 @@ def infra_arrange_confirm(solver: BaseSolver):
|
|||
|
||||
@edge(Scene.INFRA_ARRANGE_ORDER, Scene.RIIC_OPERATOR_SELECT)
|
||||
def infra_arrange_order(solver: BaseSolver):
|
||||
solver.tap_element("arrange_blue_yes", x_rate=0.66)
|
||||
solver.tap("arrange_blue_yes", x_rate=0.66)
|
||||
|
||||
|
||||
@edge(Scene.RIIC_REPORT, Scene.CTRLCENTER_ASSISTANT)
|
||||
|
@ -47,12 +47,12 @@ def riic_back(solver: BaseSolver):
|
|||
|
||||
@edge(Scene.CTRLCENTER_ASSISTANT, Scene.RIIC_REPORT)
|
||||
def riic(solver: BaseSolver):
|
||||
solver.tap_element("control_central_assistants")
|
||||
solver.tap("control_central_assistants")
|
||||
|
||||
|
||||
@edge(Scene.INFRA_MAIN, Scene.CTRLCENTER_ASSISTANT)
|
||||
def control_central(solver: BaseSolver):
|
||||
solver.tap_element("control_central")
|
||||
solver.tap("control_central")
|
||||
|
||||
|
||||
@edge(Scene.SANITY_CHARGE, Scene.INFRA_MAIN)
|
||||
|
@ -72,4 +72,4 @@ def switch_order(solver: BaseSolver):
|
|||
|
||||
@edge(Scene.PRODUCT_SWITCHING_CONFIRM, Scene.FACTORY_ROOMS)
|
||||
def product_switching_confirm(solver: BaseSolver):
|
||||
solver.tap_element("double_confirm/main", x_rate=0)
|
||||
solver.tap("double_confirm/main", x_rate=0)
|
||||
|
|
|
@ -7,10 +7,10 @@ from .utils import edge
|
|||
@edge(Scene.UNKNOW_ROGUE, Scene.ROGUE_INDEX)
|
||||
@edge(Scene.ROGUE_SELECT, Scene.ROGUE_INDEX)
|
||||
def infra_back(solver: BaseSolver):
|
||||
solver.tap_element("rogue/back")
|
||||
solver.tap("rogue/back")
|
||||
|
||||
|
||||
@edge(Scene.ROGUE_ABANDON, Scene.ROGUE_INDEX)
|
||||
@edge(Scene.ROGUE_REFRESH_SHOP, Scene.UNKNOW_ROGUE)
|
||||
def double_confirm_back(solver: BaseSolver):
|
||||
solver.tap_element("double_confirm/main", x_rate=1)
|
||||
solver.tap("double_confirm/main", x_rate=1)
|
||||
|
|
|
@ -26,4 +26,4 @@ def shop_back(solver: BaseSolver):
|
|||
|
||||
@edge(Scene.SHOP_TRADE_TOKEN, Scene.SHOP_TOKEN)
|
||||
def trade_cancel(solver: BaseSolver):
|
||||
solver.tap_element("shop/trade_token_dialog", x_rate=0)
|
||||
solver.tap("shop/trade_token_dialog", x_rate=0)
|
||||
|
|
|
@ -35,4 +35,4 @@ def sss_back(solver: BaseSolver):
|
|||
@edge(Scene.SSS_ABANDON_DROP_IN_FIGHT, Scene.OPERATOR_FIGHT)
|
||||
@edge(Scene.SSS_EXIT_CONFIRM, Scene.SSS_TERMINATED)
|
||||
def sss_exit(solver: BaseSolver):
|
||||
solver.tap_element("double_confirm/main", x_rate=1)
|
||||
solver.tap("double_confirm/main", x_rate=1)
|
||||
|
|
|
@ -153,7 +153,7 @@ class Recognizer:
|
|||
self.scene = Scene.DRONE_ACCELERATE
|
||||
elif self.find("factory_collect"):
|
||||
self.scene = Scene.FACTORY_ROOMS
|
||||
elif self.find("mail"):
|
||||
elif self.find("mail/banner"):
|
||||
self.scene = Scene.MAIL
|
||||
elif self.find("navigation/record_restoration"):
|
||||
self.scene = Scene.OPERATOR_CHOOSE_LEVEL
|
||||
|
@ -671,7 +671,7 @@ class Recognizer:
|
|||
judge: bool = True,
|
||||
strict: bool = False,
|
||||
threshold: float = 0.0,
|
||||
) -> tp.Scope:
|
||||
) -> tp.Scope | None:
|
||||
"""
|
||||
查找元素是否出现在画面中
|
||||
|
||||
|
|
|
@ -61,7 +61,9 @@ color = {
|
|||
"login_connecting": (760, 881),
|
||||
"login_loading": (920, 388),
|
||||
"login_logo": (601, 332),
|
||||
"mail": (307, 39),
|
||||
"mail/banner": (307, 39),
|
||||
"mail/collect": (1601, 979),
|
||||
"mail/delete": (1226, 978),
|
||||
"mission_collect": (1521, 164),
|
||||
"mission_trainee_on": (690, 17),
|
||||
"nav_bar": (655, 0),
|
||||
|
@ -219,6 +221,8 @@ template_matching = {
|
|||
"loading2": (620, 247),
|
||||
"loading3": (1681, 1000),
|
||||
"loading4": (828, 429),
|
||||
"mail/clean": ((1560, 150), (1830, 390)),
|
||||
"mail/complete": ((1560, 150), (1830, 390)),
|
||||
"main_theme": (283, 945),
|
||||
"main_theme_small": (321, 973),
|
||||
"materiel_ico": (892, 61),
|
||||
|
|
|
@ -174,22 +174,36 @@ class BaseSolver:
|
|||
judge: bool = True,
|
||||
strict: bool = False,
|
||||
score=0.0,
|
||||
) -> tp.Scope:
|
||||
) -> tp.Scope | None:
|
||||
return config.recog.find(res, draw, scope, thres, judge, strict, score)
|
||||
|
||||
def tap(
|
||||
self,
|
||||
poly: tp.Location,
|
||||
poly: tp.Location | tp.Res,
|
||||
x_rate: float = 0.5,
|
||||
y_rate: float = 0.5,
|
||||
interval: float = 1,
|
||||
) -> None:
|
||||
"""tap"""
|
||||
):
|
||||
"""点击元素或坐标
|
||||
|
||||
Args:
|
||||
poly (tp.Location | tp.Res): 元素名、区域或坐标
|
||||
x_rate (float, optional): 区域中横坐标的比例. Defaults to 0.5.
|
||||
y_rate (float, optional): 区域中纵坐标的比例. Defaults to 0.5.
|
||||
interval (float, optional): 点击后等待动画的时长. Defaults to 1.
|
||||
|
||||
Raises:
|
||||
MowerExit: 停止运行
|
||||
RecognizeError: 未识别到元素
|
||||
"""
|
||||
if config.stop_mower.is_set():
|
||||
raise MowerExit
|
||||
if isinstance(poly, str):
|
||||
poly = self.find(poly)
|
||||
if poly is None:
|
||||
raise RecognizeError("未识别到{res}元素")
|
||||
self.tap_info = None, None
|
||||
pos = self.get_pos(poly, x_rate, y_rate)
|
||||
config.device.tap(pos)
|
||||
config.device.tap(self.get_pos(poly, x_rate, y_rate))
|
||||
if interval > 0:
|
||||
self.sleep(interval)
|
||||
|
||||
|
@ -232,28 +246,6 @@ class BaseSolver:
|
|||
config.device.launch()
|
||||
config.recog.update()
|
||||
|
||||
def tap_element(
|
||||
self,
|
||||
element_name: tp.Res,
|
||||
x_rate: float = 0.5,
|
||||
y_rate: float = 0.5,
|
||||
interval: float = 1,
|
||||
score: float = 0.0,
|
||||
draw: bool = False,
|
||||
scope: tp.Scope = None,
|
||||
judge: bool = True,
|
||||
detected: bool = False,
|
||||
thres: Optional[int] = None,
|
||||
) -> bool:
|
||||
"""tap element"""
|
||||
element = self.find(
|
||||
element_name, draw, scope, judge=judge, score=score, thres=thres
|
||||
)
|
||||
if detected and element is None:
|
||||
return False
|
||||
self.tap(element, x_rate, y_rate, interval)
|
||||
return True
|
||||
|
||||
def tap_index_element(
|
||||
self,
|
||||
name: Literal[
|
||||
|
|
|
@ -155,7 +155,11 @@ Res = Literal[
|
|||
"login_captcha",
|
||||
"login_connecting",
|
||||
"login_logo",
|
||||
"mail",
|
||||
"mail/banner",
|
||||
"mail/clean",
|
||||
"mail/collect",
|
||||
"mail/complete",
|
||||
"mail/delete",
|
||||
"main_theme",
|
||||
"materiel_ico",
|
||||
"mission_collect",
|
||||
|
@ -354,7 +358,6 @@ Res = Literal[
|
|||
"ra/waste_time_button",
|
||||
"ra/waste_time_dialog",
|
||||
"read_and_agree",
|
||||
"read_mail",
|
||||
"recruit/agent_token",
|
||||
"recruit/agent_token_first",
|
||||
"recruit/begin_recruit",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue