NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Skill/Charge/SkillChargeTime.cs

64 lines
1.5 KiB
C#

namespace Gameplay.Skill.Charge
{
public class SkillChargeTime : BaseSkillCharge
{
private float _passTime;
private readonly float _cdTime;
public SkillChargeTime(SkillHandle skillHandle) : base(skillHandle)
{
_passTime = 0f;
_cdTime = rawConfig.ChargeParam;
}
protected override void _OnTimeChange(float dt)
{
base._OnTimeChange(dt);
var scaleTime = dt * skillHandle.owner.fightData.skillCdReduceScale;
_UpdateTime(scaleTime);
}
public void ForceFullCharge()
{
nowStoreCount = _maxStoreCount;
chargeProgress = 1f;
}
public void AddPassTime(float addTime)
{
_UpdateTime(addTime);
}
private void _UpdateTime(float dt)
{
if (nowStoreCount < _maxStoreCount)
{
_passTime += dt;
if (_passTime >= _cdTime)
{
_passTime = 0f;
nowStoreCount++;
chargeProgress = 1f;
}
else
{
chargeProgress = _passTime / _cdTime;
}
}
else
{
chargeProgress = 1f;
_passTime = 0f;
}
}
protected override void _OnUse()
{
base._OnUse();
_UpdateTime(0f);
}
}
}