This commit is contained in:
parent
8bfc70d7c3
commit
c86e7ac651
80 changed files with 225 additions and 184 deletions
|
@ -42,10 +42,11 @@ from mower.utils.scheduler_task import (
|
|||
scheduling,
|
||||
try_add_release_dorm,
|
||||
)
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.translate import translate_room
|
||||
|
||||
|
||||
class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
|
||||
class BaseSchedulerSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "经典版"
|
||||
|
||||
def __init__(self) -> None:
|
||||
|
@ -198,7 +199,7 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
|
|||
elif scene == Scene.RIIC_OPERATOR_SELECT:
|
||||
self.tap("confirm_blue")
|
||||
else:
|
||||
self.scene_graph_navigation(Scene.INFRA_MAIN)
|
||||
SceneGraphSolver().navigation(Scene.INFRA_MAIN)
|
||||
|
||||
def enter_room(self, room):
|
||||
EnterRoomSolver().run(room)
|
||||
|
@ -669,7 +670,7 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
|
|||
and config.conf.run_order_buffer_time > 0
|
||||
):
|
||||
logger.info("跑单前返回主界面以保持登录状态")
|
||||
self.back_to_index()
|
||||
SceneGraphSolver().navigation(Scene.INDEX)
|
||||
self.refresh_connecting = True
|
||||
return
|
||||
self.refresh_connecting = False
|
||||
|
@ -1001,7 +1002,7 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
|
|||
unknown_cnt += 1
|
||||
if unknown_cnt > 5:
|
||||
unknown_cnt = 0
|
||||
self.back_to_infrastructure()
|
||||
SceneGraphSolver.navigation(Scene.INFRA_MAIN)
|
||||
self.enter_room("train")
|
||||
else:
|
||||
self.sleep()
|
||||
|
@ -1039,7 +1040,7 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
|
|||
unknown_cnt += 1
|
||||
if unknown_cnt > 5:
|
||||
unknown_cnt = 0
|
||||
self.back_to_infrastructure()
|
||||
SceneGraphSolver.navigation(Scene.INFRA_MAIN)
|
||||
self.enter_room("train")
|
||||
else:
|
||||
self.sleep()
|
||||
|
@ -1653,7 +1654,7 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
|
|||
- timedelta(seconds=(60 * config.conf.run_order_delay))
|
||||
)
|
||||
logger.info("下一次进行插拔的时间为:" + execute_time.strftime("%H:%M:%S"))
|
||||
self.scene_graph_navigation(Scene.INFRA_MAIN)
|
||||
SceneGraphSolver().navigation(Scene.INFRA_MAIN)
|
||||
return execute_time
|
||||
|
||||
def adjust_order_time(self, accelerate, room):
|
||||
|
@ -2180,13 +2181,13 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
|
|||
if "检测到安排干员未成功" in str(e):
|
||||
skip_enter = True
|
||||
continue
|
||||
self.scene_graph_navigation(Scene.INFRA_MAIN)
|
||||
SceneGraphSolver().navigation(Scene.INFRA_MAIN)
|
||||
continue
|
||||
if len(new_plan) != 1:
|
||||
self.scene_graph_navigation(Scene.INFRA_MAIN)
|
||||
SceneGraphSolver().navigation(Scene.INFRA_MAIN)
|
||||
else:
|
||||
if config.conf.run_order_buffer_time <= 0:
|
||||
self.scene_graph_navigation(Scene.INFRA_MAIN)
|
||||
SceneGraphSolver().navigation(Scene.INFRA_MAIN)
|
||||
return new_plan
|
||||
|
||||
def move_free_to_end(self, input_list):
|
||||
|
|
|
@ -11,10 +11,11 @@ from mower.utils.image import crop2content, cropimg, loadres, thres2
|
|||
from mower.utils.log import logger
|
||||
from mower.utils.rapidocr import ocr_rec
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import sa, va
|
||||
|
||||
|
||||
class CreditSolver(SceneGraphSolver):
|
||||
class CreditSolver(BaseSolver):
|
||||
solver_name = "访问好友"
|
||||
|
||||
def run(self) -> None:
|
||||
|
@ -94,4 +95,4 @@ class CreditSolver(SceneGraphSolver):
|
|||
else:
|
||||
return True
|
||||
else:
|
||||
self.scene_graph_step(Scene.FRIEND_LIST)
|
||||
SceneGraphSolver().step(Scene.FRIEND_LIST)
|
||||
|
|
|
@ -15,6 +15,7 @@ from mower.utils.graph import SceneGraphSolver
|
|||
from mower.utils.image import loadimg
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
# 向下x变大 = 0
|
||||
# 向右y变大 = 0
|
||||
|
@ -154,7 +155,7 @@ def 经验卡分类(物品):
|
|||
pass
|
||||
|
||||
|
||||
class depotREC(SceneGraphSolver):
|
||||
class depotREC(BaseSolver):
|
||||
solver_name = "仓库识别"
|
||||
|
||||
def __init__(self) -> None:
|
||||
|
@ -255,7 +256,7 @@ class depotREC(SceneGraphSolver):
|
|||
return # 正确结束
|
||||
|
||||
else:
|
||||
self.scene_graph_step(Scene.DEPOT)
|
||||
SceneGraphSolver().step(Scene.DEPOT)
|
||||
return
|
||||
|
||||
def 对比截图(self, image1, image2):
|
||||
|
|
|
@ -4,12 +4,13 @@ from mower.utils import typealias as tp
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.tile_pos import Calc, find_level
|
||||
|
||||
from .mixin import FightMixin
|
||||
|
||||
|
||||
class AutoFight(SceneGraphSolver, FightMixin):
|
||||
class AutoFight(BaseSolver, FightMixin):
|
||||
solver_name = "自动战斗"
|
||||
|
||||
def run(
|
||||
|
@ -52,7 +53,7 @@ class AutoFight(SceneGraphSolver, FightMixin):
|
|||
|
||||
def breach_solver(self):
|
||||
if (strategy := config.conf.work.enemy_breach_strategy) == "give_up":
|
||||
self.scene_graph_navigation(Scene.OPERATOR_FAILED)
|
||||
SceneGraphSolver().navigation(Scene.OPERATOR_FAILED)
|
||||
elif strategy == "restart_game":
|
||||
config.device.exit()
|
||||
self.success = False
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from mower.utils import config
|
||||
from mower.utils import typealias as tp
|
||||
from mower.utils.graph.utils import SceneGraphSolver
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .battle_agent_choose import BattleAgentChooseSolver
|
||||
from .battle_fill_choose import BattleFillChooseSolver
|
||||
|
@ -9,7 +9,7 @@ from .check_current_team import CheckCurrentTeamSolver
|
|||
from .choose_squad import ChooseSquadSolver
|
||||
|
||||
|
||||
class BattleChooseSolver(SceneGraphSolver):
|
||||
class BattleChooseSolver(BaseSolver):
|
||||
solver_name = "战斗选人"
|
||||
|
||||
def run(
|
||||
|
|
|
@ -8,13 +8,13 @@ from mower.utils import config
|
|||
from mower.utils.character_recognize import (
|
||||
operator_team_select,
|
||||
)
|
||||
from mower.utils.graph.utils import SceneGraphSolver
|
||||
from mower.utils.image import cropimg, diff_ratio
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class BattleAgentChooseSolver(SceneGraphSolver):
|
||||
class BattleAgentChooseSolver(BaseSolver):
|
||||
solver_name = "战斗选择指定干员"
|
||||
|
||||
def run(self, agents: list) -> list:
|
||||
|
|
|
@ -2,14 +2,14 @@ from mower.solvers.fight.battle_choose.battle_filter import BattleFilterSolver
|
|||
from mower.solvers.fight.battle_choose.battle_tag_choose import BattleTagChoose
|
||||
from mower.utils import config
|
||||
from mower.utils.character_recognize import operator_team_select
|
||||
from mower.utils.graph.utils import SceneGraphSolver
|
||||
from mower.utils.image import cropimg, diff_ratio
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
# 按需填充干员
|
||||
class BattleFillChooseSolver(SceneGraphSolver):
|
||||
class BattleFillChooseSolver(BaseSolver):
|
||||
solver_name = "标签填充干员"
|
||||
|
||||
def run(self, label: str, number: int, black_list: list = []):
|
||||
|
|
|
@ -4,12 +4,12 @@ import cv2
|
|||
import numpy as np
|
||||
|
||||
from mower.utils import config
|
||||
from mower.utils.graph.utils import SceneGraphSolver
|
||||
from mower.utils.image import cropimg
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class BattleFilterSolver(SceneGraphSolver):
|
||||
class BattleFilterSolver(BaseSolver):
|
||||
def run(self, tag: str, ascending: bool = True) -> None:
|
||||
self.labels = [
|
||||
"获取时间",
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
from mower.utils.graph.utils import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class BattleTagChoose(SceneGraphSolver):
|
||||
class BattleTagChoose(BaseSolver):
|
||||
def run(self, tag) -> None:
|
||||
self.tag = tag
|
||||
self.first_tag = None
|
||||
|
|
|
@ -4,17 +4,17 @@ from skimage.metrics import structural_similarity
|
|||
from mower.utils import config
|
||||
from mower.utils import typealias as tp
|
||||
from mower.utils.character_recognize import operator_team
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import cmatch, cropimg, load_static
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import sa
|
||||
|
||||
from .choose_skill import ChooseSkillSolver
|
||||
from .choose_support import ChooseSupportSolver
|
||||
|
||||
|
||||
class CheckCurrentTeamSolver(SceneGraphSolver):
|
||||
class CheckCurrentTeamSolver(BaseSolver):
|
||||
solver_name = "检测当前编队"
|
||||
|
||||
def run(self, opers: tp.Opers = [], groups: tp.Groups = [], support: bool = True):
|
||||
|
|
|
@ -2,13 +2,13 @@ import cv2
|
|||
from scipy.signal import argrelmax
|
||||
|
||||
from mower.utils import config
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import cmatch, cropimg, loadres
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class ChooseSkillSolver(SceneGraphSolver):
|
||||
class ChooseSkillSolver(BaseSolver):
|
||||
solver_name = "选择干员技能"
|
||||
|
||||
def run(self, skill: int):
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import cv2
|
||||
|
||||
from mower.utils import config
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import cropimg
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class ChooseSquadSolver(SceneGraphSolver):
|
||||
class ChooseSquadSolver(BaseSolver):
|
||||
solver_name = "选择编队"
|
||||
|
||||
def run(self, squad: int):
|
||||
|
|
|
@ -12,6 +12,7 @@ from mower.utils.graph import SceneGraphSolver
|
|||
from mower.utils.image import cmatch, cropimg, loadres, thres2
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
profession_pos = {
|
||||
"PIONEER": ((30, 150), (40, 160)),
|
||||
|
@ -30,7 +31,7 @@ skill_pos = (
|
|||
)
|
||||
|
||||
|
||||
class ChooseSupportSolver(SceneGraphSolver):
|
||||
class ChooseSupportSolver(BaseSolver):
|
||||
solver_name = "选择助战干员"
|
||||
|
||||
def run(self, opers: list = [], mode: Literal["normal", "rogue"] = "normal"):
|
||||
|
@ -150,7 +151,7 @@ class ChooseSupportSolver(SceneGraphSolver):
|
|||
if self.animation():
|
||||
return
|
||||
if self.retry_times < 0:
|
||||
self.scene_graph_step(Scene.OPERATOR_SELECT)
|
||||
SceneGraphSolver().step(Scene.OPERATOR_SELECT)
|
||||
return
|
||||
if not self.check_profession_focus():
|
||||
self.tap(profession_pos[self.profession])
|
||||
|
|
|
@ -5,12 +5,12 @@ from mower.solvers.fight.battle_choose import BattleChooseSolver
|
|||
from mower.solvers.navigation import NavigationSolver
|
||||
from mower.utils import config
|
||||
from mower.utils.email import send_message
|
||||
from mower.utils.graph.utils import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class CopyWorksSolver(SceneGraphSolver):
|
||||
class CopyWorksSolver(BaseSolver):
|
||||
solver_name = "自动抄作业列表"
|
||||
|
||||
def run(self):
|
||||
|
|
|
@ -7,16 +7,16 @@ from skimage.metrics import structural_similarity
|
|||
from mower.solvers.navigation import NavigationSolver
|
||||
from mower.utils import config
|
||||
from mower.utils.email import send_message
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import cmatch, cropimg, loadres
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .auto_fight import AutoFight
|
||||
from .battle_choose import BattleChooseSolver
|
||||
|
||||
|
||||
class CreditFight(SceneGraphSolver):
|
||||
class CreditFight(BaseSolver):
|
||||
solver_name = "信用作战"
|
||||
|
||||
def run(self):
|
||||
|
|
|
@ -12,9 +12,10 @@ from mower.utils.graph.utils import SceneGraphSolver
|
|||
from mower.utils.image import cropimg
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class RIIC_ChooseSolver(SceneGraphSolver, BaseMixin):
|
||||
class RIIC_ChooseSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "基建选人"
|
||||
|
||||
def run(self, room: str, agents: list, wait_time: float = 0) -> bool:
|
||||
|
@ -221,9 +222,9 @@ class RIIC_ChooseSolver(SceneGraphSolver, BaseMixin):
|
|||
else:
|
||||
self.tap((500, 970))
|
||||
elif scene == Scene.INFRA_ARRANGE_ORDER:
|
||||
self.scene_graph_step(Scene.RIIC_OPERATOR_SELECT)
|
||||
SceneGraphSolver().step(Scene.RIIC_OPERATOR_SELECT)
|
||||
elif scene == Scene.INFRA_ARRANGE_CONFIRM:
|
||||
self.scene_graph_step(Scene.RIIC_OPERATOR_SELECT)
|
||||
SceneGraphSolver().step(Scene.RIIC_OPERATOR_SELECT)
|
||||
elif scene in self.waiting_scene:
|
||||
self.waiting_solver()
|
||||
else:
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
from mower.solvers.infra.base_mixin import BaseMixin
|
||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .utils import clue_cls
|
||||
|
||||
|
||||
class DailySolver(SceneGraphSolver, BaseMixin):
|
||||
class DailySolver(BaseSolver, BaseMixin):
|
||||
solver_name = "每日线索领取"
|
||||
|
||||
def run(self) -> None:
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
from mower.solvers.infra.base_mixin import BaseMixin
|
||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils import config
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class GetClueCountSolver(SceneGraphSolver, BaseMixin):
|
||||
class GetClueCountSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "线索数量"
|
||||
|
||||
def run(self) -> int:
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
from mower.solvers.infra.base_mixin import BaseMixin
|
||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils import config
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import cmatch, crop2content, cropimg, loadres, thres2
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.rapidocr import ocr_rec
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import va
|
||||
|
||||
from .utils import clue_cls, clue_scope
|
||||
|
||||
|
||||
class GiveAwaySolver(SceneGraphSolver, BaseMixin):
|
||||
class GiveAwaySolver(BaseSolver, BaseMixin):
|
||||
solver_name = "传递线索"
|
||||
|
||||
def run(self, clue_count) -> None:
|
||||
|
|
|
@ -3,11 +3,11 @@ from datetime import timedelta
|
|||
from mower.solvers.infra.base_mixin import BaseMixin
|
||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils import config
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class MessageBoard(SceneGraphSolver, BaseMixin):
|
||||
class MessageBoard(BaseSolver, BaseMixin):
|
||||
solver_name = "留言板"
|
||||
solver_max_duration = timedelta(minutes=2)
|
||||
|
||||
|
|
|
@ -3,14 +3,14 @@ from datetime import timedelta
|
|||
from mower.solvers.infra.base_mixin import BaseMixin
|
||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils import config
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import cmatch, cropimg, loadres
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import va
|
||||
|
||||
|
||||
class PartyTimeSolver(SceneGraphSolver, BaseMixin):
|
||||
class PartyTimeSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "线索交流结束时间"
|
||||
solver_max_duration = timedelta(minutes=2)
|
||||
|
||||
|
|
|
@ -3,11 +3,11 @@ import cv2
|
|||
from mower.solvers.infra.base_mixin import BaseMixin
|
||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils import config
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import crop2content, cropimg, loadres, thres2
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.rapidocr import ocr_rec
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import va
|
||||
|
||||
from .utils import (
|
||||
|
@ -27,7 +27,7 @@ filter_receive = (1900, 45)
|
|||
filter_self = (1610, 70)
|
||||
|
||||
|
||||
class PlaceSolver(SceneGraphSolver, BaseMixin):
|
||||
class PlaceSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "放置线索"
|
||||
|
||||
def run(self) -> None:
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
from mower.solvers.infra.base_mixin import BaseMixin
|
||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils import config
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import cropimg
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.rapidocr import ocr_rec
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .utils import clue_cls, exit_pos
|
||||
|
||||
|
||||
class ReceiveSolver(SceneGraphSolver, BaseMixin):
|
||||
class ReceiveSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "接收好友线索"
|
||||
|
||||
def run(self):
|
||||
|
|
|
@ -3,12 +3,12 @@ from mower.solvers.infra.enter_room import EnterRoomSolver
|
|||
from mower.utils import config
|
||||
from mower.utils import typealias as tp
|
||||
from mower.utils.digit_reader import get_drone
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class DroneSolver(SceneGraphSolver, BaseMixin):
|
||||
class DroneSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "无人机加速"
|
||||
|
||||
def run(
|
||||
|
|
|
@ -6,6 +6,7 @@ from mower.utils import typealias as tp
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.translate import translate_room
|
||||
from mower.utils.vector import sm, va
|
||||
|
||||
|
@ -85,7 +86,7 @@ facility = {
|
|||
}
|
||||
|
||||
|
||||
class EnterRoomSolver(SceneGraphSolver, BaseMixin):
|
||||
class EnterRoomSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "进入房间"
|
||||
|
||||
def run(self, room: str, detail: bool = True):
|
||||
|
@ -154,4 +155,4 @@ class EnterRoomSolver(SceneGraphSolver, BaseMixin):
|
|||
):
|
||||
self.ctap(pos, 1, id="enter_room")
|
||||
else:
|
||||
self.scene_graph_step(Scene.INFRA_MAIN)
|
||||
SceneGraphSolver().step(Scene.INFRA_MAIN)
|
||||
|
|
|
@ -2,12 +2,12 @@ import cv2
|
|||
import numpy as np
|
||||
|
||||
from mower.utils import config
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class RIIC_Filter(SceneGraphSolver):
|
||||
class RIIC_Filter(BaseSolver):
|
||||
solver_name = "排序"
|
||||
|
||||
def run(self, tag: str, ascending: bool = True) -> None:
|
||||
|
|
|
@ -6,8 +6,8 @@ from mower.solvers.infra.base_mixin import BaseMixin
|
|||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils import config
|
||||
from mower.utils import typealias as tp
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import cropimg, thres2
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
name_x = (1288, 1869)
|
||||
name_y = [(135, 326), (344, 535), (553, 744), (532, 723), (741, 932)]
|
||||
|
@ -20,7 +20,7 @@ time_y = [(270, 305), (480, 515), (690, 725), (668, 703), (877, 912)]
|
|||
time_p = [tuple(zip(time_x, y)) for y in time_y]
|
||||
|
||||
|
||||
class GetAgentFromRoomSolver(SceneGraphSolver, BaseMixin):
|
||||
class GetAgentFromRoomSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "读取干员信息"
|
||||
|
||||
def run(self, room: str, read_agent_time=False):
|
||||
|
|
|
@ -4,12 +4,12 @@ from mower.solvers.infra.base_mixin import BaseMixin
|
|||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils import config
|
||||
from mower.utils import typealias as tp
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class GetOrderRemainingTimeSolver(SceneGraphSolver, BaseMixin):
|
||||
class GetOrderRemainingTimeSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "订单剩余时间"
|
||||
|
||||
def run(self, room: str) -> int:
|
||||
|
|
|
@ -3,9 +3,10 @@ from mower.utils.graph import SceneGraphSolver
|
|||
from mower.utils.image import diff_ratio
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class Overview(SceneGraphSolver):
|
||||
class Overview(BaseSolver):
|
||||
solver_name = "进驻总览"
|
||||
|
||||
def transition(self):
|
||||
|
@ -22,4 +23,4 @@ class Overview(SceneGraphSolver):
|
|||
return True
|
||||
self.solver_update_before_transition = False
|
||||
else:
|
||||
self.scene_graph_step(Scene.INFRA_ARRANGE)
|
||||
SceneGraphSolver().step(Scene.INFRA_ARRANGE)
|
||||
|
|
|
@ -5,12 +5,12 @@ from mower.solvers.infra.enter_room import EnterRoomSolver
|
|||
from mower.utils import config
|
||||
from mower.utils import typealias as tp
|
||||
from mower.utils.email import send_message
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class ReloadSolver(SceneGraphSolver, BaseMixin):
|
||||
class ReloadSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "搓玉补货"
|
||||
|
||||
def run(self, room) -> None:
|
||||
|
|
|
@ -13,6 +13,7 @@ from mower.utils.image import cropimg, thres2
|
|||
from mower.utils.log import logger
|
||||
from mower.utils.path import get_path
|
||||
from mower.utils.recognize import Scene, tp
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
|
@ -31,7 +32,7 @@ class Report(Base):
|
|||
合成玉订单数量 = Column(Integer)
|
||||
|
||||
|
||||
class ReportSolver(SceneGraphSolver):
|
||||
class ReportSolver(BaseSolver):
|
||||
solver_name = "基报读取"
|
||||
|
||||
def __init__(self) -> None:
|
||||
|
@ -67,7 +68,7 @@ class ReportSolver(SceneGraphSolver):
|
|||
if (scene := self.scene()) == Scene.RIIC_REPORT:
|
||||
return self.read_report()
|
||||
elif scene == Scene.CTRLCENTER_ASSISTANT:
|
||||
self.scene_graph_step(Scene.RIIC_REPORT)
|
||||
SceneGraphSolver().step(Scene.RIIC_REPORT)
|
||||
elif scene in self.waiting_scene:
|
||||
self.waiting_solver()
|
||||
else:
|
||||
|
|
|
@ -4,13 +4,13 @@ from mower.solvers.infra.filter import RIIC_Filter
|
|||
from mower.solvers.infra.riic_tag_choose import RIICTagChoose
|
||||
from mower.utils import config
|
||||
from mower.utils.character_recognize import operator_room_select
|
||||
from mower.utils.graph.utils import SceneGraphSolver
|
||||
from mower.utils.image import cropimg
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class RIIC_FreeFillSolver(SceneGraphSolver):
|
||||
class RIIC_FreeFillSolver(BaseSolver):
|
||||
def run(self) -> bool:
|
||||
self.agent = None
|
||||
self.filterd = False
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from mower.utils.graph.utils import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
professions = [
|
||||
"PIONEER",
|
||||
|
@ -14,7 +14,7 @@ professions = [
|
|||
]
|
||||
|
||||
|
||||
class RIICTagChoose(SceneGraphSolver):
|
||||
class RIICTagChoose(BaseSolver):
|
||||
def run(self, tag) -> None:
|
||||
self.tag = tag
|
||||
self.first_tag = None
|
||||
|
|
|
@ -6,8 +6,8 @@ from mower.solvers.infra.get_order_remaining_time import (
|
|||
)
|
||||
from mower.utils import config
|
||||
from mower.utils.digit_reader import get_drone
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .read_original_order_remaining_time import ReadOriginalOrderRemainTimeSolver
|
||||
from .wait_for_order import WaitForOrderSolver
|
||||
|
@ -15,7 +15,7 @@ from .wait_for_order import WaitForOrderSolver
|
|||
limit_time = 1800
|
||||
|
||||
|
||||
class RunOrderSolver(SceneGraphSolver):
|
||||
class RunOrderSolver(BaseSolver):
|
||||
solver_name = "跑单"
|
||||
|
||||
def run(
|
||||
|
|
|
@ -2,11 +2,11 @@ from mower.solvers.infra.base_mixin import BaseMixin
|
|||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils import config
|
||||
from mower.utils import typealias as tp
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class ReadOriginalOrderRemainTimeSolver(SceneGraphSolver, BaseMixin):
|
||||
class ReadOriginalOrderRemainTimeSolver(BaseSolver, BaseMixin):
|
||||
"""
|
||||
返回剩余时间,换算为秒
|
||||
"""
|
||||
|
|
|
@ -2,11 +2,11 @@ from datetime import datetime, timedelta
|
|||
|
||||
from mower.solvers.infra.base_mixin import BaseMixin
|
||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class WaitForOrderSolver(SceneGraphSolver, BaseMixin):
|
||||
class WaitForOrderSolver(BaseSolver, BaseMixin):
|
||||
def run(self, room, wait_time) -> None:
|
||||
self.room = room
|
||||
self.wait_start()
|
||||
|
|
|
@ -4,14 +4,14 @@ from mower.solvers.fight.battle_choose.battle_fill_choose import BattleFillChoos
|
|||
from mower.solvers.infra.base_mixin import BaseMixin
|
||||
from mower.utils import config
|
||||
from mower.utils.character_recognize import match_portrait
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import ss
|
||||
|
||||
from .enter_activity import EnterActivitySolver
|
||||
|
||||
|
||||
class SwitchActivityUsersSolver(SceneGraphSolver, BaseMixin):
|
||||
class SwitchActivityUsersSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "切换活动室使用者"
|
||||
|
||||
def run(self):
|
||||
|
|
|
@ -6,9 +6,10 @@ from mower.utils import config
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class EnterActivitySolver(SceneGraphSolver, BaseMixin):
|
||||
class EnterActivitySolver(BaseSolver, BaseMixin):
|
||||
solver_name = "进入活动室"
|
||||
activity_scope = {
|
||||
1: ((1521, 410), (1620, 443)),
|
||||
|
@ -61,4 +62,4 @@ class EnterActivitySolver(SceneGraphSolver, BaseMixin):
|
|||
return True
|
||||
|
||||
else:
|
||||
self.scene_graph_step(Scene.INFRA_MAIN)
|
||||
SceneGraphSolver().step(Scene.INFRA_MAIN)
|
||||
|
|
|
@ -8,6 +8,7 @@ from mower.utils.email import assistants_template, send_message
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
pos_name = ["控制中枢", "B1", "B2", "B3", "B4"]
|
||||
|
||||
|
@ -28,7 +29,7 @@ portrait_scope = [
|
|||
]
|
||||
|
||||
|
||||
class SwitchAssistantsSolver(SceneGraphSolver, BaseMixin):
|
||||
class SwitchAssistantsSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "基建副手"
|
||||
|
||||
def run(self) -> None:
|
||||
|
@ -110,7 +111,7 @@ class SwitchAssistantsSolver(SceneGraphSolver, BaseMixin):
|
|||
self.ctap("choose_agent/battle_confirm", 3)
|
||||
|
||||
elif scene == Scene.CTRLCENTER_ASSISTANT:
|
||||
self.scene_graph_step(Scene.RIIC_REPORT)
|
||||
SceneGraphSolver().step(Scene.RIIC_REPORT)
|
||||
elif scene in self.waiting_scene:
|
||||
self.waiting_solver()
|
||||
else:
|
||||
|
|
|
@ -3,11 +3,12 @@ from mower.solvers.infra.enter_room import EnterRoomSolver
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
check_order_scope = {"lmb": ((750, 796), (803, 849)), "oru": ((1111, 796), (1164, 849))}
|
||||
|
||||
|
||||
class SwitchOrderSolver(SceneGraphSolver, BaseMixin):
|
||||
class SwitchOrderSolver(BaseSolver, BaseMixin):
|
||||
def run(self, room: str, tar_order: str):
|
||||
"""
|
||||
Args:
|
||||
|
@ -33,7 +34,7 @@ class SwitchOrderSolver(SceneGraphSolver, BaseMixin):
|
|||
self.tap((1500, 1000))
|
||||
elif scene == Scene.SWITCH_ORDER:
|
||||
if self.find("switch_order/check", scope=self.scope):
|
||||
self.scene_graph_step(Scene.ORDER_LIST)
|
||||
SceneGraphSolver().step(Scene.ORDER_LIST)
|
||||
else:
|
||||
self.tap(self.scope)
|
||||
|
||||
|
|
|
@ -8,9 +8,9 @@ from mower.solvers.infra.enter_room import EnterRoomSolver
|
|||
from mower.utils import config
|
||||
from mower.utils import typealias as tp
|
||||
from mower.utils.digit_reader import get_drone
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import cropimg, thres2
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .check_current_product import CheckCurrentProductSolver
|
||||
from .choose_product import ChooseProductSolver
|
||||
|
@ -32,7 +32,7 @@ production_time = {
|
|||
}
|
||||
|
||||
|
||||
class SwitchProductSolver(SceneGraphSolver, BaseMixin):
|
||||
class SwitchProductSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "切换产物"
|
||||
|
||||
def run(self, room, tar_product, only_get_time=False):
|
||||
|
|
|
@ -2,13 +2,13 @@ from datetime import datetime, timedelta
|
|||
|
||||
from mower.solvers.infra.base_mixin import BaseMixin
|
||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .utils import product
|
||||
|
||||
|
||||
class CheckCurrentProductSolver(SceneGraphSolver, BaseMixin):
|
||||
class CheckCurrentProductSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "检查当前产物"
|
||||
|
||||
def run(self, room) -> None:
|
||||
|
|
|
@ -5,10 +5,10 @@ from mower.solvers.infra.enter_room import EnterRoomSolver
|
|||
from mower.utils import config
|
||||
from mower.utils import typealias as tp
|
||||
from mower.utils.email import send_message
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import cmatch, cropimg, loadres
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
production_index = {
|
||||
"经验": [0, 1],
|
||||
|
@ -28,7 +28,7 @@ first_pos = [((180, 215 + 140 * i), (190, 225 + 140 * i)) for i in range(4)]
|
|||
second_pos = [(500 + 742 * j, 200 + 270 * i) for j in range(2) for i in range(4)]
|
||||
|
||||
|
||||
class ChooseProductSolver(SceneGraphSolver, BaseMixin):
|
||||
class ChooseProductSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "选择产物"
|
||||
|
||||
def run(self, room, tar_product) -> bool:
|
||||
|
|
|
@ -2,11 +2,11 @@ from mower.solvers.infra.base_mixin import BaseMixin
|
|||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils import config
|
||||
from mower.utils import typealias as tp
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class GetRemainTimeSolver(SceneGraphSolver, BaseMixin):
|
||||
class GetRemainTimeSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "获取剩余时间"
|
||||
|
||||
def run(
|
||||
|
|
|
@ -2,11 +2,11 @@ from datetime import datetime, timedelta
|
|||
|
||||
from mower.solvers.infra.base_mixin import BaseMixin
|
||||
from mower.solvers.infra.enter_room import EnterRoomSolver
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class WaitForProductSolver(SceneGraphSolver, BaseMixin):
|
||||
class WaitForProductSolver(BaseSolver, BaseMixin):
|
||||
solver_name = "等待产物完成"
|
||||
|
||||
def run(self, room, wait_time) -> None:
|
||||
|
|
|
@ -2,11 +2,12 @@ from mower.utils import config
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
collect = {"bill": "订单", "factory": "制造站产物", "trust": "信赖"}
|
||||
|
||||
|
||||
class TodoListSolver(SceneGraphSolver):
|
||||
class TodoListSolver(BaseSolver):
|
||||
solver_name = "收取产物"
|
||||
|
||||
def run(self):
|
||||
|
@ -25,7 +26,7 @@ class TodoListSolver(SceneGraphSolver):
|
|||
|
||||
elif scene == Scene.INFRA_TODOLIST:
|
||||
if self.success:
|
||||
self.scene_graph_step(Scene.INFRA_MAIN)
|
||||
SceneGraphSolver().step(Scene.INFRA_MAIN)
|
||||
for res, name in collect.items():
|
||||
score, pos = config.recog.match(f"todo_list/{res}")
|
||||
if score > 0.8:
|
||||
|
@ -35,4 +36,4 @@ class TodoListSolver(SceneGraphSolver):
|
|||
self.success = True
|
||||
|
||||
else:
|
||||
self.scene_graph_step(Scene.INFRA_MAIN)
|
||||
SceneGraphSolver().step(Scene.INFRA_MAIN)
|
||||
|
|
|
@ -4,9 +4,10 @@ from mower.utils import config
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class MailSolver(SceneGraphSolver):
|
||||
class MailSolver(BaseSolver):
|
||||
solver_name = "领取邮件"
|
||||
solver_max_duration = timedelta(minutes=2)
|
||||
|
||||
|
@ -34,4 +35,4 @@ class MailSolver(SceneGraphSolver):
|
|||
else:
|
||||
return True
|
||||
else:
|
||||
self.scene_graph_step(Scene.MAIL)
|
||||
SceneGraphSolver().step(Scene.MAIL)
|
||||
|
|
|
@ -2,9 +2,10 @@ from datetime import timedelta
|
|||
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class MissionSolver(SceneGraphSolver):
|
||||
class MissionSolver(BaseSolver):
|
||||
solver_name = "每日/每周任务"
|
||||
solver_max_duration = timedelta(minutes=2)
|
||||
|
||||
|
@ -35,4 +36,4 @@ class MissionSolver(SceneGraphSolver):
|
|||
return
|
||||
return True
|
||||
else:
|
||||
self.scene_graph_step(Scene.MISSION_DAILY)
|
||||
SceneGraphSolver().step(Scene.MISSION_DAILY)
|
||||
|
|
|
@ -9,6 +9,7 @@ from mower.utils.graph import SceneGraphSolver
|
|||
from mower.utils.image import cropimg, loadres
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import va, vs
|
||||
|
||||
from .activity import ActivityNavigation
|
||||
|
@ -430,7 +431,7 @@ difficulty_str = [
|
|||
]
|
||||
|
||||
|
||||
class NavigationSolver(SceneGraphSolver):
|
||||
class NavigationSolver(BaseSolver):
|
||||
solver_name = "关卡导航"
|
||||
|
||||
def run(self, name: str, mode: Literal["auto", "copy"] = "auto") -> bool:
|
||||
|
@ -677,7 +678,7 @@ class NavigationSolver(SceneGraphSolver):
|
|||
if self.change_to is not None:
|
||||
logger.info(f"{self.name} 无法代理")
|
||||
self.success = False
|
||||
self.back_to_index()
|
||||
SceneGraphSolver.navigation(Scene.INDEX)
|
||||
return True
|
||||
if self.find("ope_agency_lock"):
|
||||
self.change_to = self.now_difficulty ^ 1
|
||||
|
@ -713,4 +714,4 @@ class NavigationSolver(SceneGraphSolver):
|
|||
elif scene == Scene.STORY_STAGE:
|
||||
self.tap("start_story")
|
||||
else:
|
||||
self.scene_graph_step(Scene.TERMINAL_MAIN)
|
||||
SceneGraphSolver().step(Scene.TERMINAL_MAIN)
|
||||
|
|
|
@ -7,6 +7,7 @@ from mower.utils import config
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import va, vs
|
||||
|
||||
from .utils import generate_name
|
||||
|
@ -24,7 +25,7 @@ class classproperty:
|
|||
return self
|
||||
|
||||
|
||||
class ActivityNavigation(SceneGraphSolver):
|
||||
class ActivityNavigation(BaseSolver):
|
||||
solver_name = "活动关卡导航"
|
||||
|
||||
_location = {
|
||||
|
@ -143,4 +144,4 @@ class ActivityNavigation(SceneGraphSolver):
|
|||
self.tap("start_story")
|
||||
|
||||
else:
|
||||
self.scene_graph_step(Scene.TERMINAL_MAIN)
|
||||
SceneGraphSolver().step(Scene.TERMINAL_MAIN)
|
||||
|
|
|
@ -7,12 +7,13 @@ from mower.utils.graph import SceneGraphSolver
|
|||
from mower.utils.image import cropimg, loadres, template
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import sa, vs
|
||||
|
||||
from .utils import generate_name
|
||||
|
||||
|
||||
class ActivityNavigation(SceneGraphSolver):
|
||||
class ActivityNavigation(BaseSolver):
|
||||
solver_name = "活动关卡导航"
|
||||
prefix = "RS"
|
||||
|
||||
|
@ -141,4 +142,4 @@ class ActivityNavigation(SceneGraphSolver):
|
|||
self.tap("start_story")
|
||||
|
||||
else:
|
||||
self.scene_graph_step(Scene.TERMINAL_MAIN)
|
||||
SceneGraphSolver().step(Scene.TERMINAL_MAIN)
|
||||
|
|
|
@ -7,11 +7,12 @@ from mower.utils.graph import SceneGraphSolver
|
|||
from mower.utils.image import cropimg, thres2
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .utils import last_letters
|
||||
|
||||
|
||||
class LastStageNavigation(SceneGraphSolver):
|
||||
class LastStageNavigation(BaseSolver):
|
||||
def run(
|
||||
self, name: str, mode: Literal["auto", "copy"] = "auto", switch_to_ex=False
|
||||
) -> bool:
|
||||
|
@ -20,7 +21,7 @@ class LastStageNavigation(SceneGraphSolver):
|
|||
self.mode = mode
|
||||
self.success = True
|
||||
if self.name != "":
|
||||
self.scene_graph_navigation(Scene.TERMINAL_MAIN)
|
||||
SceneGraphSolver().navigation(Scene.TERMINAL_MAIN)
|
||||
super().run()
|
||||
return self.success
|
||||
|
||||
|
@ -92,4 +93,4 @@ class LastStageNavigation(SceneGraphSolver):
|
|||
return True
|
||||
|
||||
else:
|
||||
self.scene_graph_step(Scene.TERMINAL_MAIN)
|
||||
SceneGraphSolver().step(Scene.TERMINAL_MAIN)
|
||||
|
|
|
@ -13,6 +13,7 @@ from mower.utils.image import cropimg, loadres, thres2
|
|||
from mower.utils.log import logger
|
||||
from mower.utils.rapidocr import ocr_rec
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import va
|
||||
|
||||
profession_list = [
|
||||
|
@ -38,7 +39,7 @@ for name, data in agent_list.items():
|
|||
templates[data["profession"]][name] = tpl, msk, eng
|
||||
|
||||
|
||||
class OperatorSolver(SceneGraphSolver):
|
||||
class OperatorSolver(BaseSolver):
|
||||
def run(self):
|
||||
self.last_operator = ""
|
||||
self.repeat_count = 2
|
||||
|
@ -203,4 +204,4 @@ class OperatorSolver(SceneGraphSolver):
|
|||
else:
|
||||
if self.in_progress and scene != Scene.CONNECTING:
|
||||
self.wait += 0.01
|
||||
self.scene_graph_step(Scene.OPERATOR_MANAGEMENT)
|
||||
SceneGraphSolver().step(Scene.OPERATOR_MANAGEMENT)
|
||||
|
|
|
@ -9,12 +9,12 @@ import numpy as np
|
|||
from mower.utils import config
|
||||
from mower.utils import typealias as tp
|
||||
from mower.utils.csleep import MowerExit
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import cropimg, loadres, thres2
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.matcher import Matcher
|
||||
from mower.utils.rapidocr import ocr_rec
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
src_pts = np.float32([[0, 97], [1920, 97], [-400, 1080], [2320, 1080]])
|
||||
dst_pts = np.float32([[0, 0], [1920, 0], [0, 1000], [1920, 1000]])
|
||||
|
@ -41,7 +41,7 @@ class Map:
|
|||
return scope if score >= 0.5 else score
|
||||
|
||||
|
||||
class ReclamationAlgorithm(SceneGraphSolver):
|
||||
class ReclamationAlgorithm(BaseSolver):
|
||||
fast_tap_scenes = [Scene.RA_GUIDE_DIALOG]
|
||||
places = {
|
||||
"base": [[1623, 588], [1943, 906]],
|
||||
|
|
|
@ -14,6 +14,7 @@ from mower.utils.graph import SceneGraphSolver
|
|||
from mower.utils.image import cmatch, cropimg, loadres, thres2
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import va
|
||||
|
||||
job_list = [
|
||||
|
@ -28,7 +29,7 @@ job_list = [
|
|||
]
|
||||
|
||||
|
||||
class RecruitSolver(SceneGraphSolver):
|
||||
class RecruitSolver(BaseSolver):
|
||||
solver_name = "公开招募"
|
||||
|
||||
def run(self):
|
||||
|
@ -168,7 +169,7 @@ class RecruitSolver(SceneGraphSolver):
|
|||
|
||||
elif scene == Scene.RECRUIT_TAGS:
|
||||
if self.pos_state[self.recruit_index] is False:
|
||||
self.scene_graph_step(Scene.RECRUIT_MAIN)
|
||||
SceneGraphSolver().step(Scene.RECRUIT_MAIN)
|
||||
if self.recruit_index in self.tags.keys():
|
||||
del self.tags[self.recruit_index]
|
||||
return
|
||||
|
@ -257,7 +258,7 @@ class RecruitSolver(SceneGraphSolver):
|
|||
# 可能按错了,回到公招主界面重开
|
||||
del self.tags[self.recruit_index]
|
||||
del self.agent_choose[self.recruit_index]
|
||||
self.scene_graph_step(Scene.RECRUIT_MAIN)
|
||||
SceneGraphSolver().step(Scene.RECRUIT_MAIN)
|
||||
return
|
||||
|
||||
# # start recruit
|
||||
|
@ -273,7 +274,7 @@ class RecruitSolver(SceneGraphSolver):
|
|||
elif scene == Scene.RECRUIT_AGENT:
|
||||
return self.recruit_result()
|
||||
else:
|
||||
self.scene_graph_step(Scene.RECRUIT_MAIN)
|
||||
SceneGraphSolver().step(Scene.RECRUIT_MAIN)
|
||||
|
||||
def recruit_result(self):
|
||||
# 存在读完一次没退完再读一次
|
||||
|
|
|
@ -5,6 +5,7 @@ from mower.utils.email import send_message
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .choose_next_node import ChooseNextNodeSolver, DianCiChooseNextNodeSolver
|
||||
from .choose_support_award import ChooseSupportAwardSolver
|
||||
|
@ -16,7 +17,7 @@ from .rogue_shop import RogueShopSolver
|
|||
from .utils.utils import detect_layer
|
||||
|
||||
|
||||
class RogueSolver(SceneGraphSolver):
|
||||
class RogueSolver(BaseSolver):
|
||||
solver_name = "肉鸽"
|
||||
|
||||
def run(self) -> bool:
|
||||
|
@ -87,7 +88,7 @@ class RogueSolver(SceneGraphSolver):
|
|||
NodeOptionSelectSolver().run()
|
||||
|
||||
elif scene in [Scene.ROGUE_LAYER_LOADING, Scene.ROGUE_NOTICE]:
|
||||
self.scene_graph_step(Scene.ROGUE_MAIN)
|
||||
SceneGraphSolver().step(Scene.ROGUE_MAIN)
|
||||
|
||||
elif scene in [
|
||||
Scene.ROGUE_SHOP,
|
||||
|
|
|
@ -6,6 +6,7 @@ from mower.utils.graph import SceneGraphSolver
|
|||
from mower.utils.image import cropimg, loadres, template
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import sa, vs
|
||||
|
||||
from .lighten_load import LightenLoadSolver
|
||||
|
@ -15,7 +16,7 @@ from .utils.optimal_path import Path, get_optimal_path
|
|||
from .utils.utils import detect_layer, get_idea_num
|
||||
|
||||
|
||||
class ChooseNextNodeSolver(SceneGraphSolver):
|
||||
class ChooseNextNodeSolver(BaseSolver):
|
||||
solver_name = "选择下一个节点"
|
||||
|
||||
def run(self):
|
||||
|
@ -93,7 +94,7 @@ class ChooseNextNodeSolver(SceneGraphSolver):
|
|||
if self.animation(((0, 150), (1600, 880)), interval=0.1, ratio=0.1):
|
||||
return
|
||||
if len(data.next_step) == 0:
|
||||
self.scene_graph_step(Scene.ROGUE_MAIN)
|
||||
SceneGraphSolver().step(Scene.ROGUE_MAIN)
|
||||
return
|
||||
self.get_next_node_id()
|
||||
if not self.node_id or self.find("rogue/no_refresh_time"):
|
||||
|
@ -103,7 +104,7 @@ class ChooseNextNodeSolver(SceneGraphSolver):
|
|||
return
|
||||
scope = self.get_node_pos(self.node_id, ((200, 150), (960, 880)))
|
||||
if scope[1][0] - 100 < 0 or scope[0][0] > 960:
|
||||
self.scene_graph_step(Scene.ROGUE_MAIN)
|
||||
SceneGraphSolver().step(Scene.ROGUE_MAIN)
|
||||
return
|
||||
if not self.find("rogue/node_be_choosed", scope=sa(scope, (-150, 0))):
|
||||
self.tap(scope)
|
||||
|
@ -175,7 +176,7 @@ class DianCiChooseNextNodeSolver(ChooseNextNodeSolver):
|
|||
if self.animation(((0, 150), (1600, 880)), interval=0.1, ratio=0.1):
|
||||
return
|
||||
if len(data.next_step) == 0:
|
||||
self.scene_graph_step(Scene.ROGUE_MAIN)
|
||||
SceneGraphSolver().step(Scene.ROGUE_MAIN)
|
||||
return
|
||||
self.get_next_node_id()
|
||||
if not self.node_id or self.find("rogue/no_refresh_time"):
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .utils.utils import find_text
|
||||
|
||||
|
||||
class ChooseSupportAwardSolver(SceneGraphSolver):
|
||||
class ChooseSupportAwardSolver(BaseSolver):
|
||||
solver_name = "选择支援奖励"
|
||||
_award = [
|
||||
"更多补给品",
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class LightenLoadSolver(SceneGraphSolver):
|
||||
class LightenLoadSolver(BaseSolver):
|
||||
solver_name = "减轻负荷"
|
||||
|
||||
def run(self):
|
||||
|
@ -17,7 +18,7 @@ class LightenLoadSolver(SceneGraphSolver):
|
|||
if self.animation(interval=0.2):
|
||||
return
|
||||
if not self.find("rogue/Sarkaz_load/block"):
|
||||
self.scene_graph_step(Scene.ROGUE_MAIN)
|
||||
SceneGraphSolver().step(Scene.ROGUE_MAIN)
|
||||
return
|
||||
if self.find("rogue/Sarkaz_load/concentrate"):
|
||||
self.check = True
|
||||
|
|
|
@ -4,11 +4,12 @@ from mower.utils import config
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .utils.utils import find_text
|
||||
|
||||
|
||||
class NodeOptionSelectSolver(SceneGraphSolver):
|
||||
class NodeOptionSelectSolver(BaseSolver):
|
||||
solver_name = "节点选项选择"
|
||||
|
||||
@cached_property
|
||||
|
@ -63,6 +64,6 @@ class NodeOptionSelectSolver(SceneGraphSolver):
|
|||
elif scene in self.waiting_scene:
|
||||
self.waiting_solver()
|
||||
elif scene == Scene.ROGUE_NODE_LOADING:
|
||||
self.scene_graph_step(Scene.ROGUE_MAIN)
|
||||
SceneGraphSolver().step(Scene.ROGUE_MAIN)
|
||||
else:
|
||||
return True
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
from mower.utils import config
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from . import data
|
||||
from .rogue_navi import RogueNaviSolver
|
||||
|
||||
|
||||
class RogueAbandonExploreSolver(SceneGraphSolver):
|
||||
class RogueAbandonExploreSolver(BaseSolver):
|
||||
solver_name = "放弃探索"
|
||||
|
||||
def run(self) -> bool:
|
||||
|
|
|
@ -4,12 +4,13 @@ from mower.utils import config
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import va
|
||||
|
||||
from .utils.utils import find_text
|
||||
|
||||
|
||||
class RogueNaviSolver(SceneGraphSolver):
|
||||
class RogueNaviSolver(BaseSolver):
|
||||
solver_name = "肉鸽导航"
|
||||
_title = {
|
||||
"Phantom": "古堡笔记",
|
||||
|
@ -46,4 +47,4 @@ class RogueNaviSolver(SceneGraphSolver):
|
|||
self.success = True
|
||||
return True
|
||||
else:
|
||||
self.scene_graph_step(Scene.TERMINAL_LONGTERM)
|
||||
SceneGraphSolver().step(Scene.TERMINAL_LONGTERM)
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
from datetime import datetime, timedelta
|
||||
|
||||
from mower.utils.email import send_message
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .utils.utils import find_text
|
||||
|
||||
|
||||
class RogueSelectTeamSolver(SceneGraphSolver):
|
||||
class RogueSelectTeamSolver(BaseSolver):
|
||||
solver_name = "肉鸽选择分队"
|
||||
|
||||
def run(self, team: str) -> bool:
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
from mower.utils import config
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from . import data
|
||||
from .rogue_abandon_explore import RogueAbandonExploreSolver
|
||||
from .utils.utils import get_money_num
|
||||
|
||||
|
||||
class RogueShopSolver(SceneGraphSolver):
|
||||
class RogueShopSolver(BaseSolver):
|
||||
solver_name = "诡意行商投资"
|
||||
|
||||
def run(self):
|
||||
|
|
|
@ -7,10 +7,10 @@ from mower.utils import config
|
|||
from mower.utils import typealias as tp
|
||||
from mower.utils.csleep import MowerExit
|
||||
from mower.utils.email import send_message
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import cropimg
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import sa, va
|
||||
|
||||
|
||||
|
@ -20,7 +20,7 @@ def exp(card):
|
|||
return [i * p for i in data]
|
||||
|
||||
|
||||
class SecretFront(SceneGraphSolver):
|
||||
class SecretFront(BaseSolver):
|
||||
target = {
|
||||
"1A": [20, 20, 20],
|
||||
"2A": [60, 55, 45],
|
||||
|
|
|
@ -7,6 +7,7 @@ from mower.utils.graph import SceneGraphSolver
|
|||
from mower.utils.image import cropimg, thres2
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import sa, va
|
||||
|
||||
card_w, card_h = 352, 354
|
||||
|
@ -19,7 +20,7 @@ for i in range(2):
|
|||
card_list.append((left + j * (card_w + gap), top + i * (card_h + gap)))
|
||||
|
||||
|
||||
class CreditShop(SceneGraphSolver):
|
||||
class CreditShop(BaseSolver):
|
||||
solver_name = "信用商店购物"
|
||||
|
||||
def number(
|
||||
|
@ -138,4 +139,4 @@ class CreditShop(SceneGraphSolver):
|
|||
else:
|
||||
self.tap("shop/cart")
|
||||
else:
|
||||
self.scene_graph_step(Scene.SHOP_CREDIT)
|
||||
SceneGraphSolver().step(Scene.SHOP_CREDIT)
|
||||
|
|
|
@ -21,9 +21,10 @@ from datetime import timedelta
|
|||
from mower.utils.email import notify
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class Headhunting(SceneGraphSolver):
|
||||
class Headhunting(BaseSolver):
|
||||
solver_name = "每日赠送单抽"
|
||||
solver_max_duration = timedelta(minutes=1)
|
||||
|
||||
|
@ -42,4 +43,4 @@ class Headhunting(SceneGraphSolver):
|
|||
notify("成功抽完赠送单抽")
|
||||
return True
|
||||
else:
|
||||
self.scene_graph_step(Scene.HEADHUNTING)
|
||||
SceneGraphSolver().step(Scene.HEADHUNTING)
|
||||
|
|
|
@ -20,15 +20,15 @@ import cv2
|
|||
|
||||
from mower.utils import config
|
||||
from mower.utils.email import notify
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.image import cropimg
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import sa
|
||||
|
||||
activity_name = "月饼烘焙小教程·三"
|
||||
|
||||
|
||||
class MoonFestival(SceneGraphSolver):
|
||||
class MoonFestival(BaseSolver):
|
||||
def transition(self) -> bool:
|
||||
if (scene := self.scene()) == Scene.MATERIEL:
|
||||
self.sleep()
|
||||
|
|
|
@ -21,13 +21,14 @@ from datetime import timedelta
|
|||
from mower.utils.email import notify
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .utils import index_entry
|
||||
|
||||
activity_name = "龙门幸运墙"
|
||||
|
||||
|
||||
class Orundum(SceneGraphSolver):
|
||||
class Orundum(BaseSolver):
|
||||
solver_name = "幸运墙"
|
||||
solver_max_duration = timedelta(minutes=2)
|
||||
|
||||
|
@ -63,4 +64,4 @@ class Orundum(SceneGraphSolver):
|
|||
return True
|
||||
self.tap((960, 960))
|
||||
else:
|
||||
self.scene_graph_step(Scene.INDEX)
|
||||
SceneGraphSolver().step(Scene.INDEX)
|
||||
|
|
|
@ -28,10 +28,11 @@ from mower.utils.graph import SceneGraphSolver
|
|||
from mower.utils.image import crop2content, cropimg, loadres, thres2
|
||||
from mower.utils.rapidocr import ocr_rec
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import sa, va, vs
|
||||
|
||||
|
||||
class Shop(SceneGraphSolver):
|
||||
class Shop(BaseSolver):
|
||||
solver_name = "活动商店购买"
|
||||
solver_max_duration = timedelta(minutes=5)
|
||||
|
||||
|
@ -84,7 +85,7 @@ class Shop(SceneGraphSolver):
|
|||
self.swipe_ext([(1600, 340), (300, 340), (300, 150)], [0.2, 0.3], 0, 0.1)
|
||||
elif scene == Scene.ACTIVITY_SHOP_BUY:
|
||||
if self.product is None:
|
||||
self.scene_graph_step(Scene.ACTIVITY_SHOP)
|
||||
SceneGraphSolver().step(Scene.ACTIVITY_SHOP)
|
||||
return
|
||||
if self.find("sign_in/shop/insufficient"):
|
||||
return True
|
||||
|
@ -108,4 +109,4 @@ class Shop(SceneGraphSolver):
|
|||
notify("活动商店时装购买")
|
||||
self.tap((960, 200))
|
||||
else:
|
||||
self.scene_graph_step(Scene.TERMINAL_MAIN)
|
||||
SceneGraphSolver().step(Scene.TERMINAL_MAIN)
|
||||
|
|
|
@ -24,11 +24,12 @@ from mower.utils.graph import SceneGraphSolver
|
|||
from mower.utils.image import cropimg
|
||||
from mower.utils.rapidocr import ocr_rec
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
activity_name = "集成战略限时任务"
|
||||
|
||||
|
||||
class SignIn(SceneGraphSolver):
|
||||
class SignIn(BaseSolver):
|
||||
solver_name = "签到活动"
|
||||
solver_max_duration = timedelta(minutes=2)
|
||||
|
||||
|
@ -91,4 +92,4 @@ class SignIn(SceneGraphSolver):
|
|||
self.skin_email = False
|
||||
self.tap((960, 200))
|
||||
else:
|
||||
self.scene_graph_step(Scene.INDEX)
|
||||
SceneGraphSolver().step(Scene.INDEX)
|
||||
|
|
|
@ -21,11 +21,12 @@ from datetime import timedelta
|
|||
from mower.utils.email import notify
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
task_name = "百灶食珍录"
|
||||
|
||||
|
||||
class Task(SceneGraphSolver):
|
||||
class Task(BaseSolver):
|
||||
solver_name = "活动奖励领取"
|
||||
solver_max_duration = timedelta(minutes=2)
|
||||
|
||||
|
@ -64,4 +65,4 @@ class Task(SceneGraphSolver):
|
|||
notify("活动干员领取")
|
||||
self.ctap((960, 540))
|
||||
else:
|
||||
self.scene_graph_step(Scene.TERMINAL_MAIN)
|
||||
SceneGraphSolver().step(Scene.TERMINAL_MAIN)
|
||||
|
|
|
@ -6,6 +6,7 @@ from mower.utils.email import send_message
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .sss_choose import SSSChooseSolver
|
||||
from .sss_fight import SSSFightSolver
|
||||
|
@ -14,7 +15,7 @@ from .sss_ope import SSSOpeSolver
|
|||
from .utils import is_full
|
||||
|
||||
|
||||
class SSSSolver(SceneGraphSolver):
|
||||
class SSSSolver(BaseSolver):
|
||||
solver_name = "保全作战"
|
||||
|
||||
def run(self) -> bool:
|
||||
|
@ -88,17 +89,17 @@ class SSSSolver(SceneGraphSolver):
|
|||
self.full = SSSOpeSolver().run()
|
||||
return self.full
|
||||
elif scene == Scene.SSS_DROP_AGENT_BEFORE_FIGHT:
|
||||
self.scene_graph_step(Scene.SSS_DEPLOY)
|
||||
SceneGraphSolver().step(Scene.SSS_DEPLOY)
|
||||
|
||||
elif scene == Scene.SSS_EXIT_CONFIRM:
|
||||
self.scene_graph_step(Scene.SSS_TERMINATED)
|
||||
SceneGraphSolver().step(Scene.SSS_TERMINATED)
|
||||
|
||||
elif scene == Scene.SSS_TERMINATED:
|
||||
self.scene_graph_navigation(Scene.SSS_MAIN)
|
||||
SceneGraphSolver().navigation(Scene.SSS_MAIN)
|
||||
|
||||
elif scene == Scene.SSS_ACCOMPLISHED:
|
||||
logger.info("保全作战通关或终止")
|
||||
self.scene_graph_step(Scene.SSS_TERMINATED)
|
||||
SceneGraphSolver().step(Scene.SSS_TERMINATED)
|
||||
|
||||
elif scene == Scene.SSS_SQUAD:
|
||||
if config.conf.sss.choose_agent:
|
||||
|
|
|
@ -4,11 +4,11 @@ from mower.solvers.fight.battle_choose.battle_agent_choose import (
|
|||
from mower.solvers.fight.battle_choose.battle_fill_choose import BattleFillChooseSolver
|
||||
from mower.solvers.fight.battle_choose.choose_support import ChooseSupportSolver
|
||||
from mower.utils import config
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class SSSChooseSolver(SceneGraphSolver):
|
||||
class SSSChooseSolver(BaseSolver):
|
||||
solver_name = "保全选人"
|
||||
|
||||
def run(self):
|
||||
|
|
|
@ -12,6 +12,7 @@ from mower.utils.image import cropimg, loadres, thres2
|
|||
from mower.utils.log import logger
|
||||
from mower.utils.rapidocr import ocr_rec
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import ss, va
|
||||
|
||||
agent = [
|
||||
|
@ -27,7 +28,7 @@ agent = [
|
|||
]
|
||||
|
||||
|
||||
class SSSDROPSolver(SceneGraphSolver):
|
||||
class SSSDROPSolver(BaseSolver):
|
||||
solver_name = "保全增调干员或仪器"
|
||||
|
||||
def run(self) -> bool:
|
||||
|
@ -148,7 +149,7 @@ class SSSDROPSolver(SceneGraphSolver):
|
|||
return
|
||||
|
||||
elif scene == Scene.SSS_ABANDON_DROP_IN_FIGHT:
|
||||
self.scene_graph_step(Scene.OPERATOR_FIGHT)
|
||||
SceneGraphSolver().step(Scene.OPERATOR_FIGHT)
|
||||
|
||||
elif scene in self.waiting_scene:
|
||||
self.waiting_solver()
|
||||
|
|
|
@ -5,12 +5,13 @@ from mower.utils import config
|
|||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.log import logger
|
||||
from mower.utils.scene import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.tile_pos import Calc, find_level
|
||||
|
||||
from .sss_drop import SSSDROPSolver
|
||||
|
||||
|
||||
class SSSFightSolver(SceneGraphSolver, FightMixin):
|
||||
class SSSFightSolver(BaseSolver, FightMixin):
|
||||
solver_name = "保全战斗"
|
||||
|
||||
def run(
|
||||
|
@ -148,7 +149,7 @@ class SSSFightSolver(SceneGraphSolver, FightMixin):
|
|||
Scene.SSS_DROP_IN_FIGHT,
|
||||
]:
|
||||
if not SSSDROPSolver().run():
|
||||
self.scene_graph_navigation(Scene.SSS_DEPLOY)
|
||||
SceneGraphSolver().navigation(Scene.SSS_DEPLOY)
|
||||
return True
|
||||
self.clear_op()
|
||||
elif scene == Scene.SSS_ACTION:
|
||||
|
|
|
@ -7,6 +7,7 @@ from mower.utils.image import cmatch, cropimg, loadres
|
|||
from mower.utils.log import logger
|
||||
from mower.utils.rapidocr import ocr_rec
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
from mower.utils.vector import va
|
||||
|
||||
from .utils import is_full
|
||||
|
@ -26,7 +27,7 @@ ec_pos = [
|
|||
]
|
||||
|
||||
|
||||
class SSSNaviSolver(SceneGraphSolver):
|
||||
class SSSNaviSolver(BaseSolver):
|
||||
solver_name = "保全导航"
|
||||
|
||||
def run(self) -> bool:
|
||||
|
@ -105,4 +106,4 @@ class SSSNaviSolver(SceneGraphSolver):
|
|||
self.ctap("sss/check_ex", 3)
|
||||
|
||||
else:
|
||||
self.scene_graph_step(Scene.SSS_MAIN)
|
||||
SceneGraphSolver().step(Scene.SSS_MAIN)
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
from mower.utils import config
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
from .sss_navi import SSSNaviSolver
|
||||
from .utils import is_full
|
||||
|
||||
|
||||
class SSSOpeSolver(SceneGraphSolver):
|
||||
class SSSOpeSolver(BaseSolver):
|
||||
solver_name = "保全代理"
|
||||
|
||||
def run(self) -> bool:
|
||||
|
@ -41,7 +42,7 @@ class SSSOpeSolver(SceneGraphSolver):
|
|||
)
|
||||
< config.conf.sss.ope_limit_stage
|
||||
):
|
||||
self.scene_graph_step(Scene.SSS_START)
|
||||
SceneGraphSolver().step(Scene.SSS_START)
|
||||
self.check = True
|
||||
return
|
||||
self.tap("sss/ope/use")
|
||||
|
|
|
@ -2,9 +2,10 @@ from datetime import timedelta
|
|||
|
||||
from mower.utils.graph import SceneGraphSolver
|
||||
from mower.utils.recognize import Scene
|
||||
from mower.utils.solver import BaseSolver
|
||||
|
||||
|
||||
class TradeTokenSolver(SceneGraphSolver):
|
||||
class TradeTokenSolver(BaseSolver):
|
||||
solver_name = "信物兑换"
|
||||
solver_max_duration = timedelta(minutes=3)
|
||||
|
||||
|
@ -28,4 +29,4 @@ class TradeTokenSolver(SceneGraphSolver):
|
|||
else:
|
||||
self.swipe((200, 400), (0, 400))
|
||||
else:
|
||||
self.scene_graph_step(Scene.SHOP_TOKEN)
|
||||
SceneGraphSolver().step(Scene.SHOP_TOKEN)
|
||||
|
|
|
@ -30,13 +30,16 @@ def edge(v_from: int, v_to: int, interval: int | None = None):
|
|||
|
||||
|
||||
class SceneGraphSolver(BaseSolver):
|
||||
def scene_graph_navigation(self, scene: int):
|
||||
"""按场景图跳转到指定场景"""
|
||||
def navigation(self, scene: int):
|
||||
self.target_scene = scene
|
||||
super().run()
|
||||
|
||||
while self.scene() != scene:
|
||||
self.scene_graph_step(scene)
|
||||
def transition(self):
|
||||
if self.scene() == self.target_scene:
|
||||
return True
|
||||
self.step(self.target_scene)
|
||||
|
||||
def scene_graph_step(self, scene: int):
|
||||
def step(self, scene: int):
|
||||
"""waiting_solver()或按场景图跳转到指定场景只操作一步"""
|
||||
if scene not in DG.nodes:
|
||||
logger.error(f"{SceneComment[scene]}不在场景图中")
|
||||
|
@ -75,7 +78,7 @@ class SceneGraphSolver(BaseSolver):
|
|||
self.sleep()
|
||||
|
||||
def back_to_index(self):
|
||||
self.scene_graph_navigation(Scene.INDEX)
|
||||
self.navigation(Scene.INDEX)
|
||||
|
||||
def back_to_infrastructure(self):
|
||||
self.scene_graph_navigation(Scene.INFRA_MAIN)
|
||||
self.navigation(Scene.INFRA_MAIN)
|
||||
|
|
Loading…
Add table
Reference in a new issue