2023-12-06 18:36:15 +08:00
|
|
|
|
using Gameplay.PlayerSkill.Logic;
|
|
|
|
|
|
using LTGame;
|
|
|
|
|
|
namespace Gameplay.PlayerSkill.State
|
2023-12-06 12:22:59 +08:00
|
|
|
|
{
|
|
|
|
|
|
public class PlayerSkillStateRelease : BasePlayerSkillState
|
|
|
|
|
|
{
|
2023-12-06 18:36:15 +08:00
|
|
|
|
|
|
|
|
|
|
private BasePlayerSkillLogic _logic;
|
2023-12-06 12:22:59 +08:00
|
|
|
|
|
2023-12-06 15:32:45 +08:00
|
|
|
|
public PlayerSkillStateRelease(PlayerSkillManager owner) : base(owner, EPlayerSkillState.Release)
|
2023-12-06 12:22:59 +08:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2023-12-06 18:36:15 +08:00
|
|
|
|
|
|
|
|
|
|
protected override void _OnEnter(NBaseState exitState,
|
|
|
|
|
|
object param)
|
|
|
|
|
|
{
|
|
|
|
|
|
base._OnEnter(exitState, param);
|
2023-12-07 19:34:31 +08:00
|
|
|
|
|
|
|
|
|
|
owner.ResetCD(owner.readySkillConfig.CDTime);
|
2023-12-06 18:36:15 +08:00
|
|
|
|
|
|
|
|
|
|
_logic = null;
|
|
|
|
|
|
switch (owner.readySkillConfig.LogicActionId)
|
|
|
|
|
|
{
|
2023-12-08 13:28:03 +08:00
|
|
|
|
case EPlayerSkillLogicType.ForceRetreat:
|
|
|
|
|
|
_logic = new PlayerSkillLogic01();
|
|
|
|
|
|
break;
|
2023-12-11 16:53:44 +08:00
|
|
|
|
case EPlayerSkillLogicType.ForceRetreatAll:
|
|
|
|
|
|
_logic = new PlayerSkillLogic02();
|
|
|
|
|
|
break;
|
2023-12-12 12:49:49 +08:00
|
|
|
|
case EPlayerSkillLogicType.EmitBulletToCellIndex:
|
|
|
|
|
|
_logic = new PlayerSkillLogic03();
|
|
|
|
|
|
break;
|
2023-12-12 18:46:08 +08:00
|
|
|
|
case EPlayerSkillLogicType.EmitBulletToEnemyUnits:
|
|
|
|
|
|
_logic = new PlayerSkillLogic04();
|
|
|
|
|
|
break;
|
2023-12-13 14:11:09 +08:00
|
|
|
|
case EPlayerSkillLogicType.CreateSummonToCellIndex:
|
|
|
|
|
|
_logic = new PlayerSkillLogic05();
|
|
|
|
|
|
break;
|
2023-12-13 14:58:11 +08:00
|
|
|
|
case EPlayerSkillLogicType.ForceTargetUnit:
|
|
|
|
|
|
_logic = new PlayerSkillLogic06();
|
|
|
|
|
|
break;
|
2023-12-13 16:20:41 +08:00
|
|
|
|
case EPlayerSkillLogicType.SetUnitBackToReady:
|
|
|
|
|
|
_logic = new PlayerSkillLogic07();
|
|
|
|
|
|
break;
|
2023-12-18 16:14:18 +08:00
|
|
|
|
case EPlayerSkillLogicType.SendBulletToSelfVehicle:
|
|
|
|
|
|
_logic = new PlayerSkillLogic08();
|
|
|
|
|
|
break;
|
2023-12-19 15:01:19 +08:00
|
|
|
|
case EPlayerSkillLogicType.RandomReviveSelfDeadUnit:
|
|
|
|
|
|
_logic = new PlayerSkillLogic09();
|
|
|
|
|
|
break;
|
2023-12-20 14:32:55 +08:00
|
|
|
|
case EPlayerSkillLogicType.RecoverHpInPrepare:
|
|
|
|
|
|
_logic = new PlayerSkillLogic10();
|
|
|
|
|
|
break;
|
2024-09-24 14:25:04 +08:00
|
|
|
|
case EPlayerSkillLogicType.SplitMove:
|
|
|
|
|
|
_logic = new PlayerSkillLogic11();
|
|
|
|
|
|
break;
|
2023-12-06 18:36:15 +08:00
|
|
|
|
default:
|
|
|
|
|
|
DebugUtil.LogError("暂未实现的技能逻辑: " + owner.readySkillConfig.LogicActionId);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (_logic == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
isFinished = true;
|
|
|
|
|
|
nextState = EPlayerSkillState.Idle;
|
2023-12-08 13:28:03 +08:00
|
|
|
|
return;
|
2023-12-06 18:36:15 +08:00
|
|
|
|
}
|
2023-12-08 13:28:03 +08:00
|
|
|
|
|
|
|
|
|
|
_logic.owner = owner;
|
|
|
|
|
|
_logic.Init();
|
2023-12-06 18:36:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected override void _OnRunning()
|
|
|
|
|
|
{
|
|
|
|
|
|
base._OnRunning();
|
|
|
|
|
|
|
|
|
|
|
|
if (_logic == null) return;
|
|
|
|
|
|
_logic.LogicUpdate(deltaTime);
|
|
|
|
|
|
|
|
|
|
|
|
if (_logic.isFinished)
|
|
|
|
|
|
{
|
|
|
|
|
|
isFinished = true;
|
|
|
|
|
|
nextState = EPlayerSkillState.Idle;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-12-08 13:28:03 +08:00
|
|
|
|
protected override void _OnExit(NBaseState exitState,
|
|
|
|
|
|
object param)
|
|
|
|
|
|
{
|
|
|
|
|
|
base._OnExit(exitState, param);
|
|
|
|
|
|
|
|
|
|
|
|
if (_logic == null) return;
|
|
|
|
|
|
_logic.Dispose();
|
|
|
|
|
|
_logic = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-12-06 12:22:59 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|