NumberPanel.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. namespace SoftKitty.InventoryEngine
  6. {
  7. public class NumberPanel : MonoBehaviour
  8. {
  9. #region Variables
  10. private int MaxiumValue;
  11. private float ButtonHoldTime = 0F;
  12. private int Number = 0;
  13. public InputField InputNumber;
  14. public HoverEffect ButtonL;
  15. public HoverEffect ButtonR;
  16. float increment = 0.2F;
  17. [HideInInspector]
  18. public bool Enabled = true;
  19. #endregion
  20. #region Internal Methods
  21. private void Update()
  22. {
  23. if (!Enabled) return;
  24. if (int.Parse(InputNumber.text) != Number)
  25. {
  26. Number = Mathf.Clamp(int.Parse(InputNumber.text), 1, MaxiumValue);
  27. InputNumber.text = Number.ToString();
  28. }
  29. if (ButtonL.isHover)
  30. {
  31. if (InputProxy.GetMouseButtonDown(0))
  32. {
  33. AddNum(-1);
  34. ButtonHoldTime = 0F;
  35. }
  36. else if (InputProxy.GetMouseButton(0))
  37. {
  38. ButtonHoldTime += Time.deltaTime;
  39. increment = Mathf.MoveTowards(increment, 0.05F, Time.deltaTime * 0.1F);
  40. if (ButtonHoldTime > increment)
  41. {
  42. AddNum(-1);
  43. ButtonHoldTime = 0F;
  44. }
  45. }
  46. else
  47. {
  48. ButtonHoldTime = 0F;
  49. increment = 0.2F;
  50. }
  51. }
  52. if (ButtonR.isHover)
  53. {
  54. if (InputProxy.GetMouseButtonDown(0))
  55. {
  56. AddNum(1);
  57. ButtonHoldTime = 0F;
  58. }
  59. else if (InputProxy.GetMouseButton(0))
  60. {
  61. ButtonHoldTime += Time.deltaTime;
  62. increment = Mathf.MoveTowards(increment, 0.05F, Time.deltaTime * 0.1F);
  63. if (ButtonHoldTime > increment)
  64. {
  65. AddNum(1);
  66. ButtonHoldTime = 0F;
  67. }
  68. }
  69. else
  70. {
  71. ButtonHoldTime = 0F;
  72. increment = 0.2F;
  73. }
  74. }
  75. }
  76. #endregion
  77. public void Initialize(int _startValue, int _maxiumValue)//Initialize by default value and maximum value
  78. {
  79. Number = _startValue;
  80. InputNumber.text = Number.ToString();
  81. MaxiumValue = _maxiumValue;
  82. }
  83. public int GetNumber()//Get the number from user input.
  84. {
  85. return Number;
  86. }
  87. public void AddNum(int _add)//Add number by _add, it can be postive or negetive
  88. {
  89. Number = Mathf.Clamp(Number + _add, 1, MaxiumValue);
  90. InputNumber.text = Number.ToString();
  91. }
  92. public void SetNum(int _num)
  93. {
  94. Number = Mathf.Clamp(_num, 1, MaxiumValue);
  95. InputNumber.text = Number.ToString();
  96. }
  97. }
  98. }