using UnityEngine;
///
/// Tracks all active upgrades to ball effects.
/// These upgrades are applied to effect definitions at runtime.
///
public class UpgradeState
{
// Explosive upgrades
public float ExplosiveRadiusBonus { get; set; } = 0f;
public float ExplosiveDamageMultiplier { get; set; } = 1f;
// Triple Split upgrades
public float SplitAngleBonus { get; set; } = 0f;
public float SplitSpeedMultiplier { get; set; } = 1f;
public float SplitDamageMultiplier { get; set; } = 1f;
// Piercing upgrades
public int PiercingHitsBonus { get; set; } = 0;
// Homing upgrades
public float HomingTurnRateMultiplier { get; set; } = 1f;
// Teleport upgrades
public float TeleportDistanceMultiplier { get; set; } = 1f;
/// Reset all upgrades to their default values.
public void ResetAll()
{
ExplosiveRadiusBonus = 0f;
ExplosiveDamageMultiplier = 1f;
SplitAngleBonus = 0f;
SplitSpeedMultiplier = 1f;
SplitDamageMultiplier = 1f;
PiercingHitsBonus = 0;
HomingTurnRateMultiplier = 1f;
TeleportDistanceMultiplier = 1f;
}
/// Get a string summary of current upgrades.
public override string ToString()
{
return $"ExplosiveRadius: +{ExplosiveRadiusBonus:F2}, Damage x{ExplosiveDamageMultiplier:F2} | " +
$"SplitAngle: +{SplitAngleBonus:F2}, Speed x{SplitSpeedMultiplier:F2}, Damage x{SplitDamageMultiplier:F2} | " +
$"Piercing: +{PiercingHitsBonus} | HomingTurn x{HomingTurnRateMultiplier:F2} | " +
$"TeleportDist x{TeleportDistanceMultiplier:F2}";
}
}