feat(ai): 新增 IBossControl facet——Boss 阶段状态经 IAiContext 供图读取
非 Boss 敌人访问 IAiContext.Boss 显式抛 InvalidOperationException, 不返回空对象掩盖小怪图误挂 Boss 边的错误。BossResource 补 IsFull 供图条件边判定。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
namespace BaseGames.AI
|
||||
{
|
||||
/// <summary>
|
||||
/// Boss 专属决策面。挂在 <see cref="IAiContext"/> 上供 Boss 图读取阶段状态、发起阶段过渡、
|
||||
/// 查询竞技场锚点。只暴露"决策需要知道的",过渡演出与无敌帧由实现方(BossBase)负责。
|
||||
/// 非 Boss 敌人访问 <see cref="IAiContext.Boss"/> 会抛异常——这是有意的显式失败。
|
||||
/// </summary>
|
||||
public interface IBossControl
|
||||
{
|
||||
/// <summary>当前阶段索引(出生为 0)。</summary>
|
||||
int CurrentPhase { get; }
|
||||
|
||||
/// <summary>是否处于阶段过渡(无敌 + 过渡演出)期间。</summary>
|
||||
bool IsPhaseTransitioning { get; }
|
||||
|
||||
/// <summary>Boss 资源是否已满(无资源组件时恒为 false)。</summary>
|
||||
bool ResourceFull { get; }
|
||||
|
||||
/// <summary>发起阶段过渡:无敌 invincibleDuration 秒后切入 targetPhase。</summary>
|
||||
void BeginPhaseTransition(int targetPhase, float invincibleDuration);
|
||||
|
||||
// 竞技场锚点两成员(AnchorAt / DistanceToAnchor)在 Task 10 与
|
||||
// BossArenaAnchors 组件一并加入——此刻加会让 Task 2–8 期间 BossBase 编译不过。
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user