diff --git a/mower/resources/fight/breach.png b/mower/resources/fight/breach.png new file mode 100644 index 0000000..4033620 --- /dev/null +++ b/mower/resources/fight/breach.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fcc898385c3810e86855d77f8505a5cc41d0f6a392e4f7009d6bcab4ea4fb07 +size 1063 diff --git a/mower/solvers/fight/auto_fight.py b/mower/solvers/fight/auto_fight.py index e041ccf..5d3e636 100644 --- a/mower/solvers/fight/auto_fight.py +++ b/mower/solvers/fight/auto_fight.py @@ -1,4 +1,5 @@ from mower.solvers.navigation import NavigationSolver +from mower.utils import config from mower.utils.graph import SceneGraphSolver from mower.utils.log import logger from mower.utils.scene import Scene @@ -44,11 +45,23 @@ class AutoFight(SceneGraphSolver, FightMixin): "获取击杀数" return super().kills(((800, 30), (950, 60))) + def breach_solver(self): + if (strategy := config.conf.work.enemy_breach_strategy) == "give_up": + self.scene_graph_navigation(Scene.OPERATOR_FAILED) + elif strategy == "restart_game": + config.device.exit() + self.success = False + return True + return False + def transition(self): if (scene := self.scene()) == Scene.OPERATOR_FIGHT: if self.loading: self.fight_init() return + if self.find("fight/breach"): + if self.breach_solver(): + return True self.travel_watching_skills() self.execute_action() diff --git a/mower/utils/recognize/data.py b/mower/utils/recognize/data.py index 2202c9d..69e18fe 100644 --- a/mower/utils/recognize/data.py +++ b/mower/utils/recognize/data.py @@ -38,6 +38,7 @@ color = { "double_confirm/voice": (745, 435), "drone": (274, 437), "factory_collect": (1542, 886), + "fight/breach": (1246, 23), "fight/collection": (1088, 25), "fight/collection_on": (1084, 22), "fight/give_up": (1352, 838), diff --git a/mower/utils/typealias/res.py b/mower/utils/typealias/res.py index d372064..3d33ce0 100644 --- a/mower/utils/typealias/res.py +++ b/mower/utils/typealias/res.py @@ -160,6 +160,7 @@ Res = Literal[ "factory_accelerate", "factory_collect", "fight/attack", + "fight/breach", "fight/c", "fight/c_mask", "fight/choose",