MapData + Event 解耦已完成一轮收口
- `MapData` 已收口为纯初始化快照,不再承载 coin 写接口委托 - 已新增 `MapEntityLoadContext` - 用于把 `MapData` 快照与 coin 命令通道拆开传给地图加载 - `CombatLoadingState` 现在会组装: - `MapData` - `MapEntityLoadContext` - `CombatLoadSession` / `EntityExtension.ShowMap(...)` 已切到 `MapEntityLoadContext` - `MapEntity` 当前通过: - `MapEntityLoadContext` 获取初始快照与 coin 命令通道 - `CombatCoinChangedEventArgs` 同步后续 coin 变化 - 已新增 `MapCombatRuntimeBridge` - 收口地图侧 coin 当前值、命令调用与事件订阅 - `MapEntity` 不再自己维护 `_currentCoin` 和 coin 事件订阅样板
This commit is contained in:
+68
-44
@@ -6,7 +6,7 @@
|
||||
|
||||
按 `docs/CombatNodeArchitecture.md` 继续收敛 `CombatNode` 域职责。当前骨架已经基本到位,后续重点是:
|
||||
- 继续保持 `CombatScheduler` 作为唯一状态机边界,避免把新业务重新堆回本体。
|
||||
- 继续完成 `MapData + Event` 解耦收尾,确认 `MapEntity` 不再反查 `CombatNode` 域运行时。
|
||||
- 在 `MapData + Event` 已收口的基础上,继续保持 `MapEntity` 不反查 `CombatNode` 域运行时。
|
||||
- 稳定 `CombatSettlementContext` 的模型边界,避免流程控制字段和展示摘要继续混杂增长。
|
||||
- 补 Unity 编译、PlayMode 和失败路径回归验证,把这轮结构调整真正跑通。
|
||||
|
||||
@@ -195,51 +195,76 @@
|
||||
- `Assets/GameMain/Scripts/UI/Combat/UseCase/CombatInfoFormUseCase.cs`
|
||||
- `Assets/GameMain/Scripts/Event/Combat/CombatDebugFailEventArgs.cs`
|
||||
|
||||
### 10. MapData + Event 解耦已完成一轮收口
|
||||
- `MapData` 已收口为纯初始化快照,不再承载 coin 写接口委托
|
||||
- 已新增 `MapEntityLoadContext`
|
||||
- 用于把 `MapData` 快照与 coin 命令通道拆开传给地图加载
|
||||
- `CombatLoadingState` 现在会组装:
|
||||
- `MapData`
|
||||
- `MapEntityLoadContext`
|
||||
- `CombatLoadSession` / `EntityExtension.ShowMap(...)` 已切到 `MapEntityLoadContext`
|
||||
- `MapEntity` 当前通过:
|
||||
- `MapEntityLoadContext` 获取初始快照与 coin 命令通道
|
||||
- `CombatCoinChangedEventArgs` 同步后续 coin 变化
|
||||
- 已新增 `MapCombatRuntimeBridge`
|
||||
- 收口地图侧 coin 当前值、命令调用与事件订阅
|
||||
- `MapEntity` 不再自己维护 `_currentCoin` 和 coin 事件订阅样板
|
||||
|
||||
当前结论:
|
||||
- 地图侧已经完成“`MapData` 初始快照 + Event 同步 + 独立命令桥接”的接线
|
||||
- 当前未发现 `MapEntity` / 地图侧服务对 `CombatNodeComponent` 或 `CombatScheduler` 的运行时反查
|
||||
|
||||
关键文件:
|
||||
- `Assets/GameMain/Scripts/Entity/EntityData/MapData.cs`
|
||||
- `Assets/GameMain/Scripts/Entity/EntityData/MapEntityLoadContext.cs`
|
||||
- `Assets/GameMain/Scripts/Scene/Map/MapCombatRuntimeBridge.cs`
|
||||
- `Assets/GameMain/Scripts/Entity/EntityLogic/MapEntity.cs`
|
||||
- `Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatLoadingState.cs`
|
||||
- `Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatLoadSession.cs`
|
||||
- `Assets/GameMain/Scripts/Entity/EntityExtension.cs`
|
||||
|
||||
### 11. FlowCoordinator 已切到极小宿主接口
|
||||
- 已新增 `ICombatSchedulerHost`
|
||||
- `CombatSchedulerFlowCoordinator` 不再直接依赖 `CombatScheduler` 具体类,而是只依赖:
|
||||
- 状态切换入口
|
||||
- coin 命令转发
|
||||
- CombatInfo / FinishForm 所需的只读查询与回调
|
||||
- `CombatLoadSession` 与 `CombatFinishFormUseCase` 也已切到 `ICombatSchedulerHost`
|
||||
- 状态类当前通过 `Flow.ChangeState(...)` 和 `Flow` 上的轻量转发访问宿主,不再持有 `CombatScheduler` 具体类型引用
|
||||
|
||||
关键文件:
|
||||
- `Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/ICombatSchedulerHost.cs`
|
||||
- `Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatScheduler.cs`
|
||||
- `Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatSchedulerFlowCoordinator.cs`
|
||||
- `Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatLoadSession.cs`
|
||||
- `Assets/GameMain/Scripts/UI/Combat/UseCase/CombatFinishFormUseCase.cs`
|
||||
|
||||
### 12. CombatSettlementContext 已拆成 Flow / Result / Summary 分层
|
||||
- `CombatSettlementContext` 当前明确区分:
|
||||
- `Flow`
|
||||
- `Result`
|
||||
- `Summary`
|
||||
- 流程控制字段现在集中在 `Flow`
|
||||
- 结算事实与惩罚事实现在集中在 `Result`
|
||||
- `CombatFinishFormUseCase` 当前只消费 `Summary`
|
||||
- 奖励选择与延迟提交惩罚已同步切到分层后的上下文访问路径
|
||||
|
||||
关键文件:
|
||||
- `Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatSettlementContext.cs`
|
||||
- `Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatSettlementFlowService.cs`
|
||||
- `Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/CombatStates/CombatSettlementState.cs`
|
||||
- `Assets/GameMain/Scripts/UI/Combat/UseCase/CombatFinishFormUseCase.cs`
|
||||
|
||||
## 还没完成
|
||||
|
||||
### 1. MapData + Event 解耦还没完全收口
|
||||
当前:
|
||||
- `CombatLoadingState` 已经会组装更完整的 `MapData`
|
||||
- `MapEntity` 已经主要从 `MapData` 取初始上下文
|
||||
- 但还需要继续确认地图侧事件和运行时依赖是否已经完全摆脱对 `CombatNode` 域的反查
|
||||
|
||||
目标状态:
|
||||
- `CombatLoadingState` 从 `CombatInRunResourceManager` 读取快照
|
||||
- `CombatLoadingState` 组装更完整的 `MapData`
|
||||
- `MapEntity` 后续通过 `MapData + Event` 获取上下文,而不是反查 `CombatNode`
|
||||
|
||||
### 2. CombatScheduler 本体仍然还有收紧空间
|
||||
当前:
|
||||
- 生命周期入口、状态切换入口、对外公开接口、事件桥回调入口仍在 `CombatScheduler.cs`
|
||||
- 共享字段和共享流程已经拆到了 `RuntimeContext + FlowCoordinator`
|
||||
- 但 `FlowCoordinator` 目前仍直接依赖 `CombatScheduler` 宿主对象
|
||||
|
||||
目标状态:
|
||||
- 对外公开接口与内部宿主职责进一步分离
|
||||
- 若继续收紧,可评估是否引入极小宿主接口,只暴露:
|
||||
- `ChangeState(...)`
|
||||
- 必要的回调/转发入口
|
||||
- 继续避免把新业务重新塞回 `CombatScheduler.cs`
|
||||
|
||||
### 3. CombatSettlementContext 还可以继续整理字段分层
|
||||
当前:
|
||||
- `CombatSettlementContext` 已能支撑结束链
|
||||
- 但字段仍是平铺增长
|
||||
|
||||
目标状态:
|
||||
- 更明确地区分:
|
||||
- 流程控制字段
|
||||
- 结算事实字段
|
||||
- 展示摘要字段
|
||||
- 避免后续继续把 UI 需求和流程控制混在一起
|
||||
|
||||
### 4. 需要补实际运行验证
|
||||
### 1. 需要补实际运行验证
|
||||
当前改动已覆盖:
|
||||
- 状态机结构
|
||||
- 结束链/失败链协议
|
||||
- 手动失败测试入口
|
||||
- `CombatSchedulerRuntimeContext + CombatSchedulerFlowCoordinator`
|
||||
- `CombatSettlementContext` 与延迟提交惩罚
|
||||
- `CombatSchedulerRuntimeContext + CombatSchedulerFlowCoordinator + ICombatSchedulerHost`
|
||||
- `CombatSettlementContext` 分层与延迟提交惩罚
|
||||
- `MapData + Event + MapCombatRuntimeBridge`
|
||||
|
||||
但仍缺:
|
||||
- Unity 编译验证
|
||||
@@ -249,10 +274,9 @@
|
||||
|
||||
## 推荐的后续执行顺序
|
||||
|
||||
1. 做 `MapData + Event` 解耦收尾,排查 `MapEntity` 和地图侧事件是否还反查 `CombatNode`
|
||||
2. 评估是否给 `FlowCoordinator` 引入极小宿主接口,继续收紧 `CombatScheduler` 本体
|
||||
3. 继续整理 `CombatSettlementContext` 的字段分层
|
||||
4. 补 Unity 编译与手动回归验证
|
||||
1. 补 Unity 编译与手动回归验证
|
||||
2. 重点验证正常结束链、异常失败链、新开局无残留状态
|
||||
3. 若验证中暴露边界问题,再继续做小步收口
|
||||
|
||||
## 当前做变更时要记住的约束
|
||||
|
||||
|
||||
Reference in New Issue
Block a user