feat(fix-system): 添加维修模块运行状态表现

This commit is contained in:
2026-07-15 19:34:50 +08:00
parent 161fe6ac7d
commit d075d1e0f8
10 changed files with 9414 additions and 3 deletions
@@ -91,6 +91,8 @@ namespace AibisDream.FixSystem
var name = module.data.moduleName;
if (module.IsHighlighted) dto.highlightedModules.Add(name);
if (module.IsAlarmed) dto.alarmedModules.Add(name);
if (module.SupportsConditionVisual)
dto.moduleConditions[name] = module.Condition.ToString();
}
return dto;
@@ -115,12 +117,26 @@ namespace AibisDream.FixSystem
var highlighted = new HashSet<string>(dto.highlightedModules ?? Enumerable.Empty<string>());
var alarmed = new HashSet<string>(dto.alarmedModules ?? Enumerable.Empty<string>());
var moduleConditions = dto.moduleConditions ?? new Dictionary<string, string>();
foreach (var module in EnumerateAllBodyModules())
{
var name = module.data.moduleName;
module.Highlight(highlighted.Contains(name));
module.Alarm(alarmed.Contains(name));
if (!module.SupportsConditionVisual)
continue;
var condition = ModuleCondition.Normal;
if (moduleConditions.TryGetValue(name, out var conditionName)
&& !Enum.TryParse(conditionName, true, out condition))
{
Debug.LogWarning($"[BodyModuleSystem] Unknown saved module condition '{conditionName}' for {name}; using Normal.");
condition = ModuleCondition.Normal;
}
module.SetCondition(condition);
}
}
@@ -220,6 +236,15 @@ namespace AibisDream.FixSystem
return BodyModules?.FirstOrDefault(module => module.data.moduleName == modulename);
}
/// <summary>
/// 查找任意分组中的模块,包含 inactive 对象。用于可在模块显示前预设状态的 Yarn 命令。
/// </summary>
public BodyModule FindAnyBodyModuleByName(string moduleName)
{
return EnumerateAllBodyModules()
.FirstOrDefault(module => module.data.moduleName == moduleName);
}
/// <summary>
/// 寻找指定类型的BodyModule
/// </summary>
@@ -463,4 +488,4 @@ namespace AibisDream.FixSystem
Body,
Head
}
}
}