| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- using UnityEngine;
- /// <summary>
- /// Tracks all active upgrades to ball effects.
- /// These upgrades are applied to effect definitions at runtime.
- /// </summary>
- 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;
- /// <summary>Reset all upgrades to their default values.</summary>
- public void ResetAll()
- {
- ExplosiveRadiusBonus = 0f;
- ExplosiveDamageMultiplier = 1f;
- SplitAngleBonus = 0f;
- SplitSpeedMultiplier = 1f;
- SplitDamageMultiplier = 1f;
- PiercingHitsBonus = 0;
- HomingTurnRateMultiplier = 1f;
- TeleportDistanceMultiplier = 1f;
- }
- /// <summary>Get a string summary of current upgrades.</summary>
- 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}";
- }
- }
|