Working airplane ability revamp

This commit is contained in:
Michal Pikulski
2025-12-18 12:05:29 +01:00
parent ca56e748ba
commit dece09c45a
12 changed files with 407 additions and 99 deletions

View File

@@ -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