Files
BH3/Assets/Scripts/Assembly-CSharp/MoleMole/AbilityAvatarSkillButtonHoldChargeMixin.cs
2025-08-13 09:26:42 +08:00

58 lines
1.4 KiB
C#

using MoleMole.Config;
namespace MoleMole
{
public class AbilityAvatarSkillButtonHoldChargeMixin : BaseAbilityAvatarSkillButtonHoldChargeMixin
{
private AvatarSkillButtonHoldChargeAnimatorMixin config;
private EntityTimer _chargeTimer;
public AbilityAvatarSkillButtonHoldChargeMixin(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config)
: base(instancedAbility, instancedModifier, config)
{
this.config = (AvatarSkillButtonHoldChargeAnimatorMixin)config;
_chargeTimer = new EntityTimer();
_chargeTimeRatio = instancedAbility.Evaluate(this.config.ChargeTimeRatio);
}
public override void OnAdded()
{
base.OnAdded();
_chargeTimer.Reset(false);
}
protected override void OnBeforeToInLoop()
{
_chargeTimer.timespan = config.ChargeLoopDurations[_loopIx] * _chargeTimeRatio;
_chargeTimer.Reset(true);
}
protected override void OnInLoopToAfter()
{
_chargeTimer.Reset(false);
}
protected override void UpdateInLoop()
{
_chargeTimer.Core(actor.entity.GetProperty("Entity_AttackSpeed") + 1f);
}
protected override bool ShouldMoveToNextLoop()
{
return _chargeTimer.isTimeUp;
}
protected override void OnMoveingToNextLoop(bool endLoop)
{
if (endLoop)
{
_chargeTimer.Reset(false);
return;
}
_chargeTimer.timespan = config.ChargeLoopDurations[_loopIx] * _chargeTimeRatio;
_chargeTimer.Reset(true);
}
}
}