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

59 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 自主机械体系统改进计划
基于对 `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 开发**: 实现 `DroneGizmo``PawnColumnWorker`
4. **AI 移植**: 移植并适配 `JobDriver_DroneSelfShutdown` 和相关 ThinkNodes。
5. **补丁完善**: 添加 `EverControllable` 等缺失的 Harmony 补丁。
6. **测试与验证**: 确保新旧系统平滑过渡,无红字报错。