namespace Gameplay.Summon { using LTGame; public class BaseSummonState : NBaseState { public readonly BaseSummon owner; 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; } } public override void Run(float dt) { if (this.isFinished) return; this.deltaTime = dt; this.passTime += this.deltaTime; _OnPreCheck(); if (isFinished) return; this._OnRunning(); } protected override void _OnEnter(NBaseState exitState, object param) { } protected override void _OnExit(NBaseState exitState, object param) { } protected override void _OnRunning() { } } }