Constants.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. using Tools;
  4. namespace Game
  5. {
  6. [CreateAssetMenu(menuName = "Single Instance Scriptable Objects/Constants", fileName = "Constants", order = 1)]
  7. public class Constants : SingletonScriptableObject<Constants>
  8. {
  9. [SerializeField] private float _gravityScale = 4;
  10. [SerializeField] private float _jumpForce = 8.5f;
  11. [SerializeField] private float _moveVelocity = 7f;
  12. [SerializeField] private float _pinkOrbModifier = 1.5f;
  13. [SerializeField] private float _yellowOrbModifier = 1.2f * 1.5f;
  14. [SerializeField] private float _redOrbModifier = 1.5f * 1.5f;
  15. [SerializeField] private float _blueOrbModifier = 0;
  16. [SerializeField] private float _greenOrbModifier = 1.5f * 1.5f;
  17. public static float[] JumpModifiers => new float[]
  18. {
  19. Instance._pinkOrbModifier,
  20. Instance._yellowOrbModifier,
  21. Instance._redOrbModifier,
  22. Instance._blueOrbModifier,
  23. Instance._greenOrbModifier
  24. };
  25. public static Dictionary<OrbType, float> JumpModifiersDictionary => new()
  26. {
  27. { OrbType.Pink, Instance._pinkOrbModifier },
  28. { OrbType.Yellow, Instance._yellowOrbModifier },
  29. { OrbType.Red, Instance._redOrbModifier },
  30. { OrbType.Blue, Instance._blueOrbModifier },
  31. { OrbType.Green, Instance._greenOrbModifier }
  32. };
  33. public static float GravityScale => Instance._gravityScale;
  34. public static float JumpForce => Instance._jumpForce;
  35. public static float MoveVelocity => Instance._moveVelocity;
  36. public static Vector2 CalculateJumpForce(float modifier, float gravity) =>
  37. new Vector2(0, Constants.JumpForce * modifier * Mathf.Sign(gravity));
  38. }
  39. }