Files
MaaAssistantArknights/tools/TaskSorter/TaskSorter.py
Weiyou Wang f0174a6541 feat: 自动编队允许指定助战单位 (#11075)
* feat: 自动编队自动借助战

Revert d78fc68

fix: 招募助战后继续(缺少点击快速招募)

i18n: 翻译

style: clang-format

fix: basetask template

fix: werror

perf: 注释、format

i18n: en

perf: 完成功能实现,复用task,进行gui输出

perf: 更改默认状态

feat: BattleFormationTask

Revert 05baeb4 (Back to 739aa03)

* fix: 缺干员回到主界面的时候应该点确认而不是返回

* feat: 助战干员职业选择栏模版

* refactor: UseSupportUnitTaskPlugin

* chore: Auto update by pre-commit hooks [skip changelog]

* perf: 默认值适配国服

* chore: Auto update by pre-commit hooks [skip changelog]

* feat: try_find_and_apply_support_unit

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 大概可以用了

* fix: 补充 struct 的构造函数

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 添加默认构造函数

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 改改类型

* fix: callback[what] 纠正

* perf: roi及初始化优化

* perf: 简化中英文查找

* perf: rename func

* perf: click roi

* fix: 在点击助战干员的行动后添加 LoadingText

* fix: 打点 Log

* fix: remove unused function

---------

Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: 晓丶梦丶仁 <74444214+Daydreamer114@users.noreply.github.com>
2024-11-06 00:37:43 +11:00

92 lines
3.5 KiB
Python

import json
import re
from pathlib import Path
def sort_tasks(res: dict[str, any]):
# 暂时只对 Roguelike 和 Reclamation 任务进行类字典序排序,其他任务保持原有相对顺序
classified_lists = {
"UseSupportUnit...": [],
"...@UseSupportUnit...": [],
"Roguelike...": [],
"Roguelike@...": [],
"Phantom@Roguelike...": [],
"Mizuki@Roguelike...": [],
"Sami@Roguelike...": [],
"Sarkaz@Roguelike...": [],
"...@Roguelike...": [],
"Reclamation...": [],
"Reclamation@...": [],
"Fire@Reclamation...": [],
"Tales@RA...": [],
"...@Reclamation...": []
}
unclassified_list = []
classify_rules: list[tuple[str, list]] = [
(r"^UseSupportUnit", classified_lists["UseSupportUnit..."]),
(r"^(\w+)@UseSupportUnit", classified_lists["...@UseSupportUnit..."]),
(r"^Roguelike@", classified_lists["Roguelike@..."]),
(r"^Roguelike", classified_lists["Roguelike..."]),
(r"^Phantom@Roguelike", classified_lists["Phantom@Roguelike..."]),
(r"^Mizuki@Roguelike", classified_lists["Mizuki@Roguelike..."]),
(r"^Sami@Roguelike", classified_lists["Sami@Roguelike..."]),
(r"^Sarkaz@Roguelike", classified_lists["Sarkaz@Roguelike..."]),
(r"^(\w+)@Roguelike", classified_lists["...@Roguelike..."]),
(r"^Reclamation@", classified_lists["Reclamation@..."]),
(r"^Reclamation", classified_lists["Reclamation..."]),
(r"^Fire@Reclamation", classified_lists["Fire@Reclamation..."]),
(r"^Tales@RA", classified_lists["Tales@RA..."]),
(r"^(\w+)@Reclamation", classified_lists["...@Reclamation..."]),
(r"", unclassified_list)
]
for k in res.keys():
for rule, target_list in classify_rules:
if re.search(rule, k):
target_list.append(k)
break
return {
k: res[k]
for k in unclassified_list + sum([
sorted(target_list)
for target_list in classified_lists.values()], [])}
if __name__ == '__main__':
resource_dir = Path(__file__).parents[2] / "resource"
cn_task_file = resource_dir / "tasks.json"
with open(cn_task_file, "r", encoding="utf8") as f:
cn_tasks = json.load(f)
cn_tasks = sort_tasks(cn_tasks)
order = list(cn_tasks.keys())
with open(cn_task_file, "w", encoding="utf8") as f:
json.dump(cn_tasks, f, ensure_ascii=False, indent=4)
print("CN:", str(len(order)).rjust(4, " "), "tasks")
global_resources = {
"EN": resource_dir / "global/YoStarEN/resource/tasks.json",
"JP": resource_dir / "global/YoStarJP/resource/tasks.json",
"KR": resource_dir / "global/YoStarKR/resource/tasks.json",
"TW": resource_dir / "global/txwy/resource/tasks.json"
}
for server, path in global_resources.items():
with open(path, "r", encoding="utf8") as f:
tasks = json.load(f)
tasks = {
k: {
x: tasks[k][x]
for x in sorted(tasks[k].keys(),
key=lambda x: list(cn_tasks[k].keys()).index(x) if k in cn_tasks and x in cn_tasks[k] else -1)
}
for k in sorted(tasks.keys(), key=lambda k: order.index(k) if k in order else -1)
}
with open(path, "w", encoding="utf8") as f:
json.dump(tasks, f, ensure_ascii=False, indent=4)
print(server + ":", str(len(tasks)).rjust(4, " "), "tasks")