using UnityEngine;
using BaseGames.Combat;
namespace BaseGames.Enemies
{
///
/// 敌人霸体组件(架构 06_CombatModule §13)。
/// Awake 时自动注入到同节点 HurtBox(无需手动 Inspector 赋值)。
/// EnemyBase 或 BehaviorDesigner 任务可调用 SetPoiseLevel / ResetPoiseLevel 切换超甲状态。
///
[RequireComponent(typeof(EnemyBase))]
public class EnemyPoiseComponent : MonoBehaviour, IPoiseSource
{
[SerializeField] private PoiseLevel _defaultPoiseLevel = PoiseLevel.None;
private PoiseLevel _currentPoiseLevel;
private void Awake()
{
_currentPoiseLevel = _defaultPoiseLevel;
// 自动注入到所有子节点 HurtBox(支持多形状受击区)
foreach (var hurtBox in GetComponentsInChildren(true))
hurtBox.SetPoiseSource(this);
}
// ── IPoiseSource ──────────────────────────────────────────────────────
/// 返回当前帧的霸体等级(供 HurtBox.ReceiveDamage 步骤 3 比较)。
public PoiseLevel GetCurrentPoiseLevel() => _currentPoiseLevel;
// ── 外部 API ──────────────────────────────────────────────────────────
/// 进入/退出超甲时由 EnemyBase 或 BehaviorDesigner 任务调用。
public void SetPoiseLevel(PoiseLevel level) => _currentPoiseLevel = level;
/// 恢复到默认霸体等级(超甲结束时调用)。
public void ResetPoiseLevel() => _currentPoiseLevel = _defaultPoiseLevel;
}
}