Files
WulaFallenEmpireRW/Source/Documentation/AutonomousMech_Improvement_Plan.md
ProjectKoi-Kalo\Kalo ea31c5f563 重构自主机械体系统:增强UI、AI和兼容性
1.  **核心架构重构**:
    *   将硬编码的 AutonomousWorkMode 枚举替换为基于 XML 定义的 DroneWorkModeDef,以提高扩展性。
    *   定义了基础工作模式:工作、充电、休眠、自动战斗。
    *   重构了 CompAutonomousMech 以支持新的 Def 系统。

2.  **UI 增强**:
    *   添加了 DroneGizmo:为选中的机械体提供控制面板,显示能量水平并允许切换模式。
    *   添加了 PawnColumnWorker_DroneWorkMode 和 PawnColumnWorker_DroneEnergy:在机械体列表中显示工作模式图标和能量条。
    *   通过 Harmony 补丁 Patch_MainTabWindow_Mechs_Pawns 将自主机械体集成到原版机械体主标签页中。
    *   扩展了 PawnTableDefOf.Mechs 以包含新的自定义列。

3.  **AI 与行为改进**:
    *   实现了 JobDriver_DroneSelfShutdown 和 JobGiver_DroneSelfShutdown:机械体现在会在低电量或被命令时寻找安全地点休眠。
    *   添加了 ThinkNode_ConditionalWorkMode_Drone 和 ThinkNode_ConditionalLowEnergy_Drone 用于行为树逻辑。

4.  **兼容性与修复**:
    *   添加了 Patch_MechanitorUtility_EverControllable:确保自主机械体始终可控,防止在没有监管者时失去控制。
    *   修复了机械体缺少监管者警报的误报问题。
2025-11-23 14:58:13 +08:00

3.3 KiB
Raw Blame History

自主机械体系统改进计划

基于对 AncotLibrary 的分析,我们将对现有的 WULA_AutonomousMech 系统进行全面升级,旨在提供更灵活的配置、更友好的 UI 交互以及更智能的 AI 行为。

1. 核心架构重构

1.1 工作模式数据驱动化

  • 目标: 废弃硬编码的 AutonomousWorkMode 枚举,转为使用 XML 定义的 DroneWorkModeDef
  • 实现:
    • 创建 DroneWorkModeDef 类,包含 iconPath (图标路径), uiOrder (排序), label (名称), description (描述) 等字段。
    • CompAutonomousMech 中使用 DroneWorkModeDef 类型的字段替代原有的枚举。
    • 预定义基础模式:Work (工作), Recharge (充电), Shutdown (休眠), AutoFight (自动战斗)。

1.2 自动战斗系统 (AutoFight)

  • 目标: 允许机械体在非征召状态下自动寻找并攻击敌人。
  • 实现:
    • 引入 CompMechAutoFight 组件(或集成到 CompAutonomousMech 中)。
    • 添加 ThinkNode_ConditionalAutoFight 行为树节点。
    • 实现自动索敌和攻击的 AI 逻辑(参考 JobGiver_AIFightEnemies)。
    • 威胁判定: 确保开启自动战斗的机械体能被敌人正确识别为威胁(已部分实现,需完善)。

2. UI 交互增强

2.1 高级 Gizmo (DroneGizmo)

  • 目标: 提供更直观的控制面板。
  • 实现:
    • 能量条: 在 Gizmo 上直接显示当前能量百分比和剩余工作时间。
    • 拖动设置: 允许玩家通过拖动条设置“自动充电阈值”(例如:低于 30% 去充电)。
    • 模式切换: 点击图标弹出 FloatMenu 选择工作模式。
    • 批量操作: 当选中多个同类机械体时Gizmo 操作应同步应用到所有选中的单位。

2.2 列表视图增强 (PawnColumnWorker)

  • 目标: 在“动物/机械体”概览面板中提供关键信息。
  • 实现:
    • PawnColumnWorker_DroneEnergy: 显示能量条。
    • PawnColumnWorker_DroneWorkMode: 显示当前工作模式图标,点击可快速切换。

3. AI 行为优化

3.1 智能充电与休眠

  • 目标: 防止机械体在工作途中突然断电倒地。
  • 实现:
    • 低电量保护: 当能量低于临界值(如 5%)且无法到达充电站时,自动寻找最近的安全地点(如室内、屋顶下)进入休眠状态 (JobDriver_DroneSelfShutdown)。
    • 智能充电: 优化 JobGiver_GetDroneEnergy,根据距离和当前工作优先级动态决定何时去充电。

3.2 永远可控 (EverControllable)

  • 目标: 确保无论发生什么(如断网、无监管者),玩家始终能控制机械体。
  • 实现:
    • 参考 AncotPatch_MechanitorUtility_EverControllable,通过 Harmony 补丁强制 MechanitorUtility.EverControllable 返回 true。

4. 实施步骤

  1. 定义 Defs: 创建 DroneWorkModeDef 及相关 XML 配置。
  2. 重构 Comp: 修改 CompAutonomousMech 以支持新的 Def 和逻辑。
  3. UI 开发: 实现 DroneGizmoPawnColumnWorker
  4. AI 移植: 移植并适配 JobDriver_DroneSelfShutdown 和相关 ThinkNodes。
  5. 补丁完善: 添加 EverControllable 等缺失的 Harmony 补丁。
  6. 测试与验证: 确保新旧系统平滑过渡,无红字报错。