This commit is contained in:
parent
46d0f0154a
commit
bbf758a4c1
1 changed files with 15 additions and 24 deletions
|
@ -20,10 +20,10 @@ from mower.utils.vector import sa, va
|
|||
class AutoFight(SceneGraphSolver):
|
||||
def run(
|
||||
self,
|
||||
level_name,
|
||||
opers,
|
||||
actions,
|
||||
groups=[],
|
||||
level_name: str,
|
||||
opers: list,
|
||||
actions: list,
|
||||
groups: list = [],
|
||||
):
|
||||
"""
|
||||
Args:
|
||||
|
@ -53,23 +53,14 @@ class AutoFight(SceneGraphSolver):
|
|||
self.replacements = {} # 将干员组的名字替换为对应干员
|
||||
super().run()
|
||||
|
||||
def find_and_change_group_name(self, name: str) -> str:
|
||||
if name in self.replacements:
|
||||
return self.replacements[name]
|
||||
for i in range(len(self.groups) - 1, -1, -1):
|
||||
group = self.groups[i]
|
||||
if group["name"] == name:
|
||||
def change_group(self):
|
||||
if len(self.groups) == 0:
|
||||
return
|
||||
for group in self.groups:
|
||||
for op in group["opers"]:
|
||||
if op["name"] in self.operators:
|
||||
self.replacements[name] = op["name"]
|
||||
logger.debug(f"{name}替换为{op['name']}")
|
||||
name = op["name"]
|
||||
del op["name"]
|
||||
self.watching[name] = op
|
||||
self.watching[name]["location"] = None
|
||||
del self.groups[i]
|
||||
return name
|
||||
return name
|
||||
self.replacements[op["name"]] = group["name"]
|
||||
op["name"] = group["name"]
|
||||
self.opers.append(op)
|
||||
|
||||
def update_watching(self):
|
||||
for op in self.opers:
|
||||
|
@ -156,8 +147,6 @@ class AutoFight(SceneGraphSolver):
|
|||
self.post_delay = 0
|
||||
|
||||
def check_condition(self) -> bool:
|
||||
if "name" in self.action and self.action["name"] in self.replacements:
|
||||
self.action["name"] = self.replacements[self.action["name"]]
|
||||
if "kills" in self.action and self.action["kills"] > self.kills():
|
||||
return False
|
||||
if "costs" in self.action and self.action["costs"] > self.cost():
|
||||
|
@ -244,6 +233,7 @@ class AutoFight(SceneGraphSolver):
|
|||
cost.append(self.number(cost_scope, 25, 80))
|
||||
operators = match_avatar(config.recog.img, segment)
|
||||
for idx, (name, scope) in enumerate(operators):
|
||||
name = self.replacements[name] if name in self.replacements else name
|
||||
self.operators[name] = {"scope": scope, "cost": cost[idx]}
|
||||
logger.debug(self.operators)
|
||||
|
||||
|
@ -317,7 +307,7 @@ class AutoFight(SceneGraphSolver):
|
|||
|
||||
def deploy(self):
|
||||
"部署干员"
|
||||
name = self.find_and_change_group_name(self.action["name"])
|
||||
name = self.action["name"]
|
||||
if name not in self.operators:
|
||||
self.update_operators()
|
||||
return
|
||||
|
@ -418,6 +408,7 @@ class AutoFight(SceneGraphSolver):
|
|||
if self.loading:
|
||||
self.pause()
|
||||
self.loading = False
|
||||
self.change_group()
|
||||
self.update_operators()
|
||||
self.update_watching()
|
||||
self.play()
|
||||
|
|
Loading…
Reference in a new issue