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}"; } }