InventoryGenerationComponent G2
This commit is contained in:
+4
-4
@@ -111,10 +111,10 @@
|
||||
|
||||
| 状态 | ID | 任务 | 目标 |
|
||||
|-----|-------|-----------------------------------|------------|
|
||||
| [ ] | G1-01 | 新增 `InventoryGenerationComponent` | 建立统一组件产出入口 |
|
||||
| [ ] | G1-02 | 新增 `ComponentItemFactory` | 收口组件实例构造 |
|
||||
| [ ] | G1-03 | 新增 `ShopGoodsBuilder` | 收口商店货物生成 |
|
||||
| [ ] | G1-04 | 让 `ShopFormUseCase` 改用组件入口 | 商店不再自己生成组件 |
|
||||
| [x] | G1-01 | 新增 `InventoryGenerationComponent` | 建立统一组件产出入口 |
|
||||
| [x] | G1-02 | 新增 `ComponentItemFactory` | 收口组件实例构造 |
|
||||
| [x] | G1-03 | 新增 `ShopGoodsBuilder` | 收口商店货物生成 |
|
||||
| [x] | G1-04 | 让 `ShopFormUseCase` 改用组件入口 | 商店不再自己生成组件 |
|
||||
|
||||
### G1 验收标准
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# CombatNode 设计规范(开发约束)
|
||||
|
||||
最后更新:2026-03-06
|
||||
最后更新:2026-03-12
|
||||
|
||||
## 1. 适用范围与目标
|
||||
|
||||
@@ -296,22 +296,25 @@
|
||||
- `Coin / BaseHp` 变化事件同时携带“当前值”和“变化量”。
|
||||
- `Gold` 只是结算累计值,不要求战斗内实时事件驱动。
|
||||
|
||||
### 4.5 EnemyDropResolver
|
||||
### 4.5 InventoryGenerationComponent
|
||||
|
||||
文件:`Assets/GameMain/Scripts/CustomComponent/CombatNode/CombatScheduler/EnemyDrop/EnemyDropResolver.cs`
|
||||
文件:`Assets/GameMain/Scripts/CustomComponent/InventoryGeneration/InventoryGenerationComponent.cs`
|
||||
|
||||
目标职责:
|
||||
- 只负责敌人死亡后的掉落判定。
|
||||
- 输入:
|
||||
- `DREnemy`
|
||||
- 当前阶段索引
|
||||
- 当前主题或关卡上下文
|
||||
- 输出:
|
||||
- 掉落结果对象(`coin / gold / loot`)
|
||||
- 作为局外组件产出的统一运行时入口。
|
||||
- 对外提供:
|
||||
- `BuildShopGoods(...)`
|
||||
- `ResolveEnemyDrop(...)`
|
||||
- `BuildRewardCandidates(...)`
|
||||
- 在内部编排:
|
||||
- `DropPoolRoller`
|
||||
- `RewardCandidateBuilder`
|
||||
- `ComponentItemFactory`
|
||||
|
||||
约束:
|
||||
- 不直接修改资源状态。
|
||||
- 不直接读取 `CombatNodeComponent`、`MapEntity`、`EnemyManager` 内部状态。
|
||||
- `CombatNode` 域不直接持有或复制组件产出规则。
|
||||
- `CombatScheduler` 与结算状态链只调用统一入口,不直接访问掉落池滚动或组件实例构造细节。
|
||||
- `InventoryGenerationComponent` 负责组件实例生成、Tag 随机上下文以及 `runSeed/sequenceIndex` 相关上下文。
|
||||
|
||||
### 4.6 IPhaseEndCondition
|
||||
|
||||
@@ -406,7 +409,7 @@ Boss 识别规则:
|
||||
- `OnEnemyDefeated(DREnemy enemy)`
|
||||
- `OnEnemyReachedBase(DREnemy enemy)`
|
||||
- `CombatScheduler` 公共层负责处理敌人事件的通用副作用:
|
||||
- 击杀:调用 `EnemyDropResolver`,再调用局内资源管理器入账。
|
||||
- 击杀:调用 `GameEntry.InventoryGeneration.ResolveEnemyDrop(...)`,再调用局内资源管理器入账。
|
||||
- 到家:调用局内资源管理器扣减 `BaseHp`。
|
||||
|
||||
约束:
|
||||
@@ -467,7 +470,7 @@ Boss 识别规则:
|
||||
1. `CombatScheduler` 只做状态机管理与共享运行时收口,不继续吸收具体业务细节。
|
||||
2. `CombatNodeComponent` 不再持有战斗内资源真值。
|
||||
3. 局内 `Coin / Gold / BaseHp / Loot Backpack / BuildTowerSnapshots` 以 `CombatRunResourceStore` 为唯一真值来源。
|
||||
4. 敌人死亡掉落判定以 `EnemyDropResolver` 为唯一判定入口。
|
||||
4. 组件产出规则以 `InventoryGenerationComponent` 为统一运行时入口;战斗掉落与奖励候选都通过它生成。
|
||||
5. 存活敌人数与 `HasAliveBoss` 以 `EnemyLifecycleTracker` 为唯一真值来源。
|
||||
6. Phase 运行时信息与统一结束标记以 `PhaseLoopRuntime` 为唯一真值来源。
|
||||
7. `PhaseEndType` 的退出条件以 `IPhaseEndCondition` 实现类为唯一判定入口。
|
||||
@@ -498,7 +501,11 @@ Boss 识别规则:
|
||||
|
||||
### 10.3 新增敌人掉落规则
|
||||
|
||||
优先改 `EnemyDropResolver`,不要在 `EnemyManager` 或状态类里直接计算掉落。
|
||||
优先改 `InventoryGenerationComponent` 及其下层规则模块,不要在 `EnemyManager`、`CombatScheduler` 或状态类里直接计算掉落。
|
||||
|
||||
### 10.3.x 新增奖励候选规则
|
||||
|
||||
优先改 `InventoryGenerationComponent`、`RewardCandidateBuilder` 或 `DropPoolRoller`,不要在结算状态链里复制一套候选生成规则。
|
||||
|
||||
### 10.4 新增战斗内资源或建塔快照规则
|
||||
|
||||
|
||||
Reference in New Issue
Block a user