Working airplane ability revamp
This commit is contained in:
@@ -13,6 +13,7 @@ namespace Minigames.Airplane.Abilities
|
||||
|
||||
private readonly float jetSpeed;
|
||||
private readonly float jetAngle;
|
||||
private readonly float cooldownMultiplier;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -21,11 +22,12 @@ namespace Minigames.Airplane.Abilities
|
||||
/// <summary>
|
||||
/// Create jet ability with configuration from settings.
|
||||
/// </summary>
|
||||
public JetAbility(string name, Sprite icon, float cooldown, float speed, float angle)
|
||||
: base(name, icon, cooldown)
|
||||
public JetAbility(string name, Sprite icon, float cooldown, float speed, float angle, float maxActiveDuration, float cooldownMult)
|
||||
: base(name, icon, cooldown, reusable: true, activeDuration: maxActiveDuration)
|
||||
{
|
||||
jetSpeed = speed;
|
||||
jetAngle = angle;
|
||||
cooldownMultiplier = cooldownMult;
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -87,15 +89,32 @@ namespace Minigames.Airplane.Abilities
|
||||
currentAirplane.RotateToVelocity = originalRotateToVelocity;
|
||||
}
|
||||
|
||||
base.Deactivate();
|
||||
if (showDebugLogs)
|
||||
{
|
||||
Logging.Debug($"[JetAbility] Deactivating after {activeDurationUsed:F2}s usage");
|
||||
}
|
||||
|
||||
// Start cooldown after deactivation
|
||||
StartCooldown();
|
||||
// Base.Deactivate() will call CalculateDynamicCooldown and start cooldown
|
||||
base.Deactivate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Calculate dynamic cooldown based on usage time.
|
||||
/// Full duration (maxActiveDuration) = maxActiveDuration * cooldownMultiplier cooldown.
|
||||
/// Partial usage = proportional cooldown.
|
||||
/// </summary>
|
||||
protected override float CalculateDynamicCooldown()
|
||||
{
|
||||
// Calculate proportional cooldown: usedTime * multiplier
|
||||
// Example: 5s max, 2x multiplier -> full use = 10s cooldown, 2.5s use = 5s cooldown
|
||||
float dynamicCooldown = activeDurationUsed * cooldownMultiplier;
|
||||
|
||||
if (showDebugLogs)
|
||||
{
|
||||
Logging.Debug("[JetAbility] Deactivated, cooldown started");
|
||||
Logging.Debug($"[JetAbility] CalculateDynamicCooldown: used={activeDurationUsed:F2}s, multiplier={cooldownMultiplier}, result={dynamicCooldown:F2}s");
|
||||
}
|
||||
|
||||
return dynamicCooldown;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Reference in New Issue
Block a user