重构自主机械体系统:增强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:确保自主机械体始终可控,防止在没有监管者时失去控制。
* 修复了机械体缺少监管者警报的误报问题。
This commit is contained in:
58
Source/Documentation/AutonomousMech_Improvement_Plan.md
Normal file
58
Source/Documentation/AutonomousMech_Improvement_Plan.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# 自主机械体系统改进计划
|
||||
|
||||
基于对 `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. **测试与验证**: 确保新旧系统平滑过渡,无红字报错。
|
||||
Reference in New Issue
Block a user