fix(ai): 应用 Task 1+2 代码审查意见
ResourceFull 未挂 BossResource 时改为显式抛——原先静默返回 false, 是 CLAUDE.md 第 6 条禁止的下游兜底,且与紧邻的 Boss facet 行为不一致。 FakeBossControl.DistanceToAnchor 不再忽略 index。测试改用 TearDown 清理 (本项目关闭了 Domain/Scene Reload,失败断言会把物体永久留在打开的场景里)。 BeginPhaseTransition 去掉死的默认参数;接口补充重入契约说明。 顺带去重:FakeAiContext 实现 IEnemyActor,删除两个测试内的本地 Ctx 副本 ——一个接口成员改动要同步三份是复发性成本。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
namespace BaseGames.AI
|
||||
{
|
||||
/// <summary>
|
||||
/// Boss 专属决策面。挂在 <see cref="IAiContext"/> 上供 Boss 图读取阶段状态、发起阶段过渡、
|
||||
/// 查询竞技场锚点。只暴露"决策需要知道的",过渡演出与无敌帧由实现方(BossBase)负责。
|
||||
/// Boss 专属决策面。挂在 <see cref="IAiContext"/> 上供 Boss 图读取阶段状态、发起阶段过渡。
|
||||
/// 只暴露"决策需要知道的",过渡演出与无敌帧由实现方(BossBase)负责。
|
||||
/// 非 Boss 敌人访问 <see cref="IAiContext.Boss"/> 会抛异常——这是有意的显式失败。
|
||||
/// </summary>
|
||||
public interface IBossControl
|
||||
@@ -13,13 +13,14 @@ namespace BaseGames.AI
|
||||
/// <summary>是否处于阶段过渡(无敌 + 过渡演出)期间。</summary>
|
||||
bool IsPhaseTransitioning { get; }
|
||||
|
||||
/// <summary>Boss 资源是否已满(无资源组件时恒为 false)。</summary>
|
||||
/// <summary>Boss 资源是否已满。未挂资源组件时抛异常——图问了资源却没配组件是配置错误。</summary>
|
||||
bool ResourceFull { get; }
|
||||
|
||||
/// <summary>发起阶段过渡:无敌 invincibleDuration 秒后切入 targetPhase。</summary>
|
||||
/// <summary>发起阶段过渡:无敌 invincibleDuration 秒后切入 targetPhase。
|
||||
/// 过渡进行中重复调用会被忽略并告警——应在 OnEnter 调用一次,不要放在 Tick。</summary>
|
||||
void BeginPhaseTransition(int targetPhase, float invincibleDuration);
|
||||
|
||||
// 竞技场锚点两成员(AnchorAt / DistanceToAnchor)在 Task 10 与
|
||||
// BossArenaAnchors 组件一并加入——此刻加会让 Task 2–8 期间 BossBase 编译不过。
|
||||
// 竞技场锚点两成员(AnchorAt / DistanceToAnchor)随 BossArenaAnchors 组件一并加入,
|
||||
// 届时 BossBase 同步实现。
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user