2023-11-15 18:25:27 +08:00
|
|
|
|
namespace Gameplay.Summon
|
2023-08-22 19:08:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
using LTGame;
|
|
|
|
|
|
|
|
|
|
|
|
public class BaseSummonState : NBaseState
|
|
|
|
|
|
{
|
|
|
|
|
|
|
2023-10-19 15:00:19 +08:00
|
|
|
|
public readonly BaseSummon owner;
|
2023-08-22 19:08:45 +08:00
|
|
|
|
|
|
|
|
|
|
public BaseSummonState(BaseSummon owner, int id) : base(id)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.owner = owner;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected virtual void _OnPreCheck()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (owner.runtimeData.remainExistTime <= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
isFinished = true;
|
|
|
|
|
|
nextState = ESummonState.WaitRemove;
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2025-02-12 13:51:35 +08:00
|
|
|
|
|
|
|
|
|
|
if (owner.statusData.canBeAttack && owner.aliveData.currentHp <= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
isFinished = true;
|
|
|
|
|
|
owner.statusData.isDead = true;
|
|
|
|
|
|
nextState = ESummonState.WaitRemove;
|
|
|
|
|
|
}
|
2023-08-22 19:08:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override void Run(float dt)
|
|
|
|
|
|
{
|
2025-02-11 17:53:42 +08:00
|
|
|
|
if (isFinished) return;
|
|
|
|
|
|
deltaTime = dt;
|
|
|
|
|
|
passTime += deltaTime;
|
2023-08-22 19:08:45 +08:00
|
|
|
|
_OnPreCheck();
|
|
|
|
|
|
if (isFinished) return;
|
2025-02-11 17:53:42 +08:00
|
|
|
|
_OnRunning();
|
2023-08-22 19:08:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected override void _OnEnter(NBaseState exitState, object param)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected override void _OnExit(NBaseState exitState, object param)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected override void _OnRunning()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|