72 lines
1.6 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
}
|