HealsDisplayer.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using UnityEngine.UI;
  2. using UnityEngine;
  3. namespace HQFPSWeapons.UserInterface
  4. {
  5. public class HealsDisplayer : HUD_DisplayerBehaviour
  6. {
  7. [BHeader("Heals HUD...")]
  8. [SerializeField]
  9. private Text m_HealsAmountText = null;
  10. [SerializeField]
  11. private string m_HealsContainerName = "Backpack";
  12. [BHeader("Heal! (Low Health Message...)")]
  13. [SerializeField]
  14. private float m_LowHealthThreshold = 0f;
  15. [SerializeField]
  16. private CanvasGroup m_HealCanvas = null;
  17. public override void OnPostAttachment()
  18. {
  19. OnInventoryChanged();
  20. Player.Inventory.ContainerChanged.AddListener(OnInventoryChanged);
  21. Player.Healing.AddStopListener(OnEndHealing);
  22. Player.Health.AddChangeListener(OnPlayerChangeHealth);
  23. OnPlayerChangeHealth(Player.Health.Val);
  24. }
  25. private void OnEndHealing()
  26. {
  27. OnInventoryChanged();
  28. }
  29. private void OnPlayerChangeHealth(float healthAmount)
  30. {
  31. if (Player.Health.Val == 0)
  32. {
  33. m_HealCanvas.alpha = 0;
  34. return;
  35. }
  36. if (healthAmount < m_LowHealthThreshold)
  37. m_HealCanvas.alpha = 1;
  38. else if (m_HealCanvas.gameObject.activeSelf)
  39. m_HealCanvas.alpha = 0;
  40. }
  41. private void OnInventoryChanged()
  42. {
  43. int healsAmount = 0;
  44. ItemContainer container = Player.Inventory.GetContainerWithName(m_HealsContainerName);
  45. if (container != null)
  46. {
  47. foreach (var slot in container.Slots)
  48. {
  49. if (slot.HasItem)
  50. healsAmount++;
  51. }
  52. m_HealsAmountText.text = "x " + healsAmount.ToString();
  53. }
  54. else
  55. {
  56. m_HealsAmountText.text = "NULL";
  57. }
  58. }
  59. }
  60. }