Skip to content

Commit

Permalink
bug fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Shawnsdaddy committed Feb 15, 2025
1 parent b483e35 commit bd5d1e3
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 38 deletions.
2 changes: 1 addition & 1 deletion arknights_mower/solvers/base_schedule.py
Original file line number Diff line number Diff line change
Expand Up @@ -1403,6 +1403,7 @@ def get_resting_plan(self, agents, exist_replacement, plan, current_resting):
# if _dorm.position[0] not in plan.keys():
# plan[_dorm.position[0]] = ["Current"] * 5
# plan[_dorm.position[0]][_dorm.position[1]] = _dorm.name
logger.debug(_dorm)
for k, v in __plan.items():
if k not in plan.keys():
plan[k] = __plan[k]
Expand Down Expand Up @@ -2463,7 +2464,6 @@ def turn_on_room_detail(self, room):
elif pos := self.find("arrange_check_in_small"):
self.tap(pos, interval=0.7)
else:
logger.info("sleep")
self.sleep()
for back_time in range(3):
if pos := self.find("control_central"):
Expand Down
69 changes: 35 additions & 34 deletions arknights_mower/utils/operators.py
Original file line number Diff line number Diff line change
Expand Up @@ -627,46 +627,46 @@ def average_mood(self):
def available_free(self, free_type="high", time=None):
if not time:
time = datetime.now()
ret = 0
freeName = []

max_count = sum(1 for key in self.plan if key.startswith("dorm"))
if free_type == "high":
idx = 0
for dorm in self.dorm:
if dorm.name == "" or (
dorm.name in self.operators.keys()
and not self.operators[dorm.name].is_high()
):
ret += 1
elif dorm.time is not None and dorm.time < time:
logger.info(f"检测到房间休息完毕,释放{dorm.name}宿舍位")
freeName.append(dorm.name)
ret += 1
if idx == max_count - 1:
break
total = len(self.dorm)

count_high = 0
count_normal = 0
count_low = 0
free_name = []

# 一次性遍历 dorm
for dorm in self.dorm:
if dorm.name == "" or (
dorm.name in self.operators.keys()
and not self.operators[dorm.name].is_high()
):
count_low += 1 # 空位或非 high 的人

elif dorm.time is not None and dorm.time < time:
logger.info(f"检测到房间休息完毕,释放{dorm.name}宿舍位")
free_name.append(dorm.name)
count_low += 1 # 休息完的也算空位

if dorm.name in self.operators:
op = self.operators[dorm.name]
if op.resting_priority == "high":
count_high += 1
else:
idx += 1
else:
for i in range(max_count, len(self.dorm)):
dorm = self.dorm[i]
# 释放满休息位
# TODO 高效组且低优先可以相互替换
if dorm.name == "" or (
dorm.name in self.operators.keys()
and not self.operators[dorm.name].is_high()
):
ret += 1
elif dorm.time is not None and dorm.time < time:
logger.info(f"检测到房间休息完毕,释放{dorm.name}宿舍位")
freeName.append(dorm.name)
ret += 1
if len(freeName) > 0:
for name in freeName:
count_normal += 1

available_high = max(0, max_count - count_high)

available_low = total - max_count - count_low - min(0, count_high - max_count)

if len(free_name) > 0:
for name in free_name:
if name in agent_list:
self.operators[name].mood = self.operators[name].upper_limit
self.operators[name].depletion_rate = 0
self.operators[name].time_stamp = time
return ret
return available_high if free_type == "high" else available_low

def assign_dorm(self, name, is_new=False):
is_high = self.operators[name].resting_priority == "high"
Expand Down Expand Up @@ -695,6 +695,7 @@ def assign_dorm(self, name, is_new=False):
or not self.operators[obj.name].is_high()
or (obj.time is not None and obj.time < datetime.now())
)
logger.debug(f"安排{name}{_room.position}")
_room.name = name
_room.time = None
return _room
Expand Down
6 changes: 3 additions & 3 deletions arknights_mower/utils/scheduler_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,7 @@ def plan_metadata(op_data, tasks):
def try_reorder(op_data):
# 复制副本,防止原本的dorm错误触发纠错
dorm = copy.deepcopy(op_data.dorm)
logger.debug(op_data.dorm)
priority_list = op_data.config.ope_resting_priority
vip = sum(1 for key in op_data.plan.keys() if key.startswith("dorm"))
logger.debug(f"当前vip个数{vip}")
Expand Down Expand Up @@ -451,9 +452,8 @@ def sort_key(_op):

dorm_info.sort(key=sort_key)
for idx in range(len(dorm)):
if dorm[idx].name: # **只修改非空 dorm**
dorm[idx].name = dorm_info[idx]["name"]
dorm[idx].time = dorm_info[idx]["time"]
dorm[idx].name = dorm_info[idx]["name"]
dorm[idx].time = dorm_info[idx]["time"]
plan = {}
logger.debug(f"更新房间信息{dorm}")
for room in dorm:
Expand Down

0 comments on commit bd5d1e3

Please sign in to comment.