using Gameplay.PlayerSkill.Logic; using LTGame; namespace Gameplay.PlayerSkill.State { public class PlayerSkillStateRelease : BasePlayerSkillState { private BasePlayerSkillLogic _logic; public PlayerSkillStateRelease(PlayerSkillManager owner) : base(owner, EPlayerSkillState.Release) { } protected override void _OnEnter(NBaseState exitState, object param) { base._OnEnter(exitState, param); owner.ResetCD(owner.readySkillConfig.CDTime); _logic = null; switch (owner.readySkillConfig.LogicActionId) { case EPlayerSkillLogicType.ForceRetreat: _logic = new PlayerSkillLogic01(); break; case EPlayerSkillLogicType.ForceRetreatAll: _logic = new PlayerSkillLogic02(); break; case EPlayerSkillLogicType.EmitBulletToCellIndex: _logic = new PlayerSkillLogic03(); break; case EPlayerSkillLogicType.EmitBulletToEnemyUnits: _logic = new PlayerSkillLogic04(); break; case EPlayerSkillLogicType.CreateSummonToCellIndex: _logic = new PlayerSkillLogic05(); break; case EPlayerSkillLogicType.ForceTargetUnit: _logic = new PlayerSkillLogic06(); break; case EPlayerSkillLogicType.SetUnitBackToReady: _logic = new PlayerSkillLogic07(); break; case EPlayerSkillLogicType.SendBulletToSelfVehicle: _logic = new PlayerSkillLogic08(); break; case EPlayerSkillLogicType.RandomReviveSelfDeadUnit: _logic = new PlayerSkillLogic09(); break; case EPlayerSkillLogicType.RecoverHpInPrepare: _logic = new PlayerSkillLogic10(); break; default: DebugUtil.LogError("暂未实现的技能逻辑: " + owner.readySkillConfig.LogicActionId); break; } if (_logic == null) { isFinished = true; nextState = EPlayerSkillState.Idle; return; } _logic.owner = owner; _logic.Init(); } protected override void _OnRunning() { base._OnRunning(); if (_logic == null) return; _logic.LogicUpdate(deltaTime); if (_logic.isFinished) { isFinished = true; nextState = EPlayerSkillState.Idle; } } protected override void _OnExit(NBaseState exitState, object param) { base._OnExit(exitState, param); if (_logic == null) return; _logic.Dispose(); _logic = null; } } }