using System.Collections.Generic;
using BaseGames.AI;
namespace BaseGames.Enemies
{
///
/// 未发现层:玩家尚未被发现时的行为形状(单一站桩 / 单向降级 / 定时交替 …)。
///
/// 刻意拆成两阶段:AiRuntime 按声明顺序评估条件边,若本模块的内部边(如巡逻计时)
/// 早于骨架的升级边声明,玩家进入追逐区那一帧若恰好计时到点,敌人会切去另一个待机态
/// 而不是扑上来。骨架的调用顺序固定为 Declare → 挂升级边 → Link。
///
public interface IUnawareModule
{
/// 只声明状态与行为回调,不挂任何转换。
void Declare(BrainBuilder b);
/// 挂内部转换(如站立 ⇄ 巡逻的计时边)。没有内部边的模块留空实现。
void Link(BrainBuilder b);
/// 图入口(出生态)。
string Entry { get; }
/// 脱战 / 警觉丢失后回到的态。必须属于 States。
string Rest { get; }
/// 需要挂升级边的所有未发现态。
IReadOnlyList States { get; }
}
}