ItemProperty.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using UnityEngine;
  3. namespace HQFPSWeapons
  4. {
  5. public class ItemProperty
  6. {
  7. [Serializable]
  8. public struct Float
  9. {
  10. public float Current { get { return m_Current; } set { m_Current = value; } }
  11. /// <summary>The default value, that was set up initially, when the item was defined.</summary>
  12. public float Default { get { return m_Default; } }
  13. /// <summary>This is equal to Current / Default.</summary>
  14. public float Ratio { get { return m_Current / m_Default; } }
  15. #pragma warning disable 0649
  16. [SerializeField]
  17. private float m_Current;
  18. [SerializeField]
  19. private float m_Default;
  20. #pragma warning restore 0649
  21. public override string ToString()
  22. {
  23. return m_Current.ToString();
  24. }
  25. }
  26. [Serializable]
  27. public struct Definition
  28. {
  29. public string Name { get { return m_Name; } }
  30. #pragma warning disable 0649
  31. [SerializeField]
  32. private string m_Name;
  33. #pragma warning restore 0649
  34. }
  35. [Serializable]
  36. public class Value
  37. {
  38. [NonSerialized]
  39. public Message<Value> Changed = new Message<Value>();
  40. public string Name { get { return m_Name; } }
  41. public Float Val { get { return m_Float; } }
  42. [SerializeField]
  43. private string m_Name = string.Empty;
  44. [SerializeField]
  45. private Float m_Float = new Float();
  46. public Value GetClone()
  47. {
  48. return (Value)MemberwiseClone();
  49. }
  50. public void SetValue(object value)
  51. {
  52. m_Float = (Float)value;
  53. Changed.Send(this);
  54. }
  55. public override string ToString()
  56. {
  57. m_Float.ToString();
  58. return m_Name;
  59. }
  60. public void AdjustValue(float adjustment, float clampMin = -Mathf.Infinity, float clampMax = Mathf.Infinity)
  61. {
  62. var floatingPointNr = m_Float;
  63. floatingPointNr.Current = Mathf.Clamp(floatingPointNr.Current + adjustment, clampMin, clampMax);
  64. SetValue(floatingPointNr);
  65. }
  66. }
  67. }
  68. }