NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/PlayerSkill/PlayerSkillManager.cs

72 lines
1.6 KiB
C#

using cfg.SkillCfg;
using Framework;
using Gameplay.PlayerSkill.State;
using LTGame;
namespace Gameplay.PlayerSkill
{
public class PlayerSkillManager
{
private NStateMachine<BasePlayerSkillState> _fsm;
public int readySkillId { get; private set; }
public DataPlayerSkill readySkillConfig { get; private set; }
private float _maxCd;
private float _curCd;
public bool isInCD
{
get
{
return _curCd > 0;
}
}
public void Init()
{
_InitFsm();
}
private void _InitFsm()
{
_fsm = new NStateMachine<BasePlayerSkillState>();
_fsm.Add(new PlayerSkillStateIdle(this));
_fsm.Add(new PlayerSkillStateChoosePos(this));
_fsm.Add(new PlayerSkillStateRelease(this));
_fsm.ChangeState(EPlayerSkillState.Idle);
}
public void LogicUpdate(float dt)
{
_curCd -= dt;
_fsm.LogicUpdate(dt);
}
public void Dispose()
{
}
public float GetCDProgress(int id)
{
if (_curCd <= 0) return 0;
return _curCd / _maxCd;
}
public void ReadySkill(int skillId)
{
readySkillId = skillId;
readySkillConfig = TableManager.Instance.Tables.PlayerSkillConfig.Get(skillId);
}
public void ResetCD(float cdTime)
{
_maxCd = cdTime;
_curCd = _maxCd;
}
}
}