改写战斗中替换group的逻辑
All checks were successful
ci/woodpecker/push/check_format Pipeline was successful

This commit is contained in:
Elaina 2024-10-13 01:24:58 +08:00
parent 46d0f0154a
commit bbf758a4c1

View file

@ -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()