docs(enemy): 按 Task 1+2 审查结论修订 spec 与计划
spec:ResourceFull 由「无组件时恒 false」改为显式抛,与 Boss facet、AnchorAt 统一为「依赖组件缺失一律抛,不返默认值」。 计划:Task 16 补上 BossBase 残余三处行为树残留的清理项(含运行时告警字符串); Task 19 记录 Patterns/ 是零外部引用的独立程序集,可整目录删。
This commit is contained in:
@@ -219,7 +219,7 @@ namespace BaseGames.AI
|
||||
{
|
||||
int CurrentPhase { get; }
|
||||
bool IsPhaseTransitioning { get; }
|
||||
bool ResourceFull { get; } // BossResource 满值;无资源组件时恒 false
|
||||
bool ResourceFull { get; } // BossResource 满值;未挂该组件即抛(见下)
|
||||
void BeginPhaseTransition(int targetPhase, float invincibleDuration);
|
||||
|
||||
// 竞技场锚点(§5.5)。归本 facet 而非黑板:见下方修订说明。
|
||||
@@ -242,6 +242,12 @@ namespace BaseGames.AI
|
||||
`EnemyBrainContext.Boss => _boss ?? throw new InvalidOperationException(...)`。
|
||||
按 CLAUDE.md 第 6 条:小怪图误用它必须崩,不能返回一个空对象把问题盖住。
|
||||
|
||||
> 修订(2026-07-30,Task 1+2 代码审查):`ResourceFull` 初稿定为「无资源组件时恒 false」,
|
||||
> **已改为未挂 `BossResource` 时显式抛**。原设计是同一条第 6 条禁止的下游兜底——
|
||||
> 图上挂了 `When(x => x.Boss.ResourceFull)` 边、预制体却漏挂组件时,那条边会永远不成立且零报错。
|
||||
> 与紧邻的 `Boss` facet、以及 §5.5 的 `AnchorAt` 保持同一失败语义:**Boss 专属 facet 的每个成员,
|
||||
> 在其依赖组件缺失时一律显式抛,不返回默认值。**
|
||||
|
||||
`BossBase` 实现 `IBossControl`;`EnemyBrainContext` 在构造时 `_boss = enemy as BossBase`。
|
||||
|
||||
### 5.2 `BossPhaseAbilityGate`
|
||||
|
||||
Reference in New Issue
Block a user