UpgradeState.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using UnityEngine;
  2. /// <summary>
  3. /// Tracks all active upgrades to ball effects.
  4. /// These upgrades are applied to effect definitions at runtime.
  5. /// </summary>
  6. public class UpgradeState
  7. {
  8. // Explosive upgrades
  9. public float ExplosiveRadiusBonus { get; set; } = 0f;
  10. public float ExplosiveDamageMultiplier { get; set; } = 1f;
  11. // Triple Split upgrades
  12. public float SplitAngleBonus { get; set; } = 0f;
  13. public float SplitSpeedMultiplier { get; set; } = 1f;
  14. public float SplitDamageMultiplier { get; set; } = 1f;
  15. // Piercing upgrades
  16. public int PiercingHitsBonus { get; set; } = 0;
  17. // Homing upgrades
  18. public float HomingTurnRateMultiplier { get; set; } = 1f;
  19. // Teleport upgrades
  20. public float TeleportDistanceMultiplier { get; set; } = 1f;
  21. /// <summary>Reset all upgrades to their default values.</summary>
  22. public void ResetAll()
  23. {
  24. ExplosiveRadiusBonus = 0f;
  25. ExplosiveDamageMultiplier = 1f;
  26. SplitAngleBonus = 0f;
  27. SplitSpeedMultiplier = 1f;
  28. SplitDamageMultiplier = 1f;
  29. PiercingHitsBonus = 0;
  30. HomingTurnRateMultiplier = 1f;
  31. TeleportDistanceMultiplier = 1f;
  32. }
  33. /// <summary>Get a string summary of current upgrades.</summary>
  34. public override string ToString()
  35. {
  36. return $"ExplosiveRadius: +{ExplosiveRadiusBonus:F2}, Damage x{ExplosiveDamageMultiplier:F2} | " +
  37. $"SplitAngle: +{SplitAngleBonus:F2}, Speed x{SplitSpeedMultiplier:F2}, Damage x{SplitDamageMultiplier:F2} | " +
  38. $"Piercing: +{PiercingHitsBonus} | HomingTurn x{HomingTurnRateMultiplier:F2} | " +
  39. $"TeleportDist x{TeleportDistanceMultiplier:F2}";
  40. }
  41. }