using UnityEngine;
using BaseGames.Core.Events;
namespace BaseGames.Enemies
{
///
/// Boss 敌人基类。扩展 以支持多阶段切换与战斗结束广播。
/// 具体 Boss 继承此类并重写 。
///
public class BossBase : EnemyBase
{
[Header("Boss 配置")]
[SerializeField] private string _bossId;
[SerializeField] private BoolEventChannelSO _onBossFightEnded;
[SerializeField] private BossPhaseEventChannelSO _onBossPhaseChanged;
public string BossId => _bossId;
protected int _currentPhase = 0;
///
/// 进入指定阶段。广播 供 UI / 音乐系统响应。
/// 子类可重写以添加额外过渡逻辑(动画、无敌帧等)。
///
public virtual void EnterPhase(int phase)
{
_currentPhase = phase;
_onBossPhaseChanged?.Raise(new BossPhaseEvent
{
BossId = _bossId,
Phase = phase,
});
}
/// 检查当前 HP 是否低于指定百分比(0~1)。
public bool IsHPBelow(float ratio)
{
if (_stats == null || _stats.MaxHP <= 0) return false;
return (float)_stats.CurrentHP / _stats.MaxHP < ratio;
}
protected override void Die()
{
base.Die();
_onBossFightEnded?.Raise(true);
}
}
}