TopHeadBar.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using System.Collections;
  4. public class TopHeadBar : MonoBehaviour {
  5. public Image icon;
  6. public Text timeTxt;
  7. public Image hpBar;
  8. public Sprite myHpBarSprite;
  9. public Sprite allyHpBarSprite;
  10. public Sprite oppHpBarSprite;
  11. private Player player;
  12. private Craft craft;
  13. void Awake()
  14. {
  15. OnCraftChanged ();
  16. }
  17. public void SetPlayer(Player player)
  18. {
  19. if (player != null)
  20. player.GetHero().CraftChanged.RemoveListener (OnCraftChanged);
  21. this.player = player;
  22. this.player.GetHero().CraftChanged.AddListener (OnCraftChanged);
  23. OnCraftChanged ();
  24. }
  25. public Player GetPlayer()
  26. {
  27. return this.player;
  28. }
  29. private void OnCraftChanged ()
  30. {
  31. Dispose();
  32. if(player != null && player.GetHero().GetCraft() != null)
  33. {
  34. this.craft = player.GetHero().GetCraft();
  35. craft.Killed += OnKilled;
  36. craft.HpChanged += OnHpChanged;
  37. craft.OnSwapped += OnSwapped;
  38. timeTxt.enabled = false;
  39. hpBar.enabled = true;
  40. icon.enabled = true;
  41. OnCtrlChanged ();
  42. OnHpChanged();
  43. OnSwapped();
  44. }
  45. else
  46. {
  47. this.craft = null;
  48. icon.enabled = hpBar.enabled = false;
  49. timeTxt.enabled = true;
  50. timeTxt.text = "--";
  51. }
  52. }
  53. public void Refresh()
  54. {
  55. }
  56. void OnDestroy()
  57. {
  58. if (player != null)
  59. player.GetHero().CraftChanged.RemoveListener (OnCraftChanged);
  60. Dispose();
  61. }
  62. public void Dispose()
  63. {
  64. if(craft != null)
  65. {
  66. craft.Killed -= OnKilled;
  67. craft.HpChanged -= OnHpChanged;
  68. craft.OnSwapped -= OnSwapped;
  69. craft.OnCtrlChanged -= OnCtrlChanged;
  70. }
  71. }
  72. private void OnSwapped()
  73. {
  74. if(craft != null)
  75. {
  76. icon.sprite = Resources.Load<Sprite>(craft.GetIcon());
  77. }
  78. }
  79. private void OnKilled()
  80. {
  81. icon.enabled = false;
  82. timeTxt.enabled = true;
  83. timeTxt.text = Player.heroReliveHoldTime.ToString();
  84. hpBar.fillAmount = 0;
  85. }
  86. private void OnHpChanged()
  87. {
  88. if(craft != null)
  89. {
  90. hpBar.fillAmount = craft.hp / craft.maxHp;
  91. }
  92. }
  93. private void OnCtrlChanged()
  94. {
  95. if(craft.IsCtrl())
  96. hpBar.sprite = myHpBarSprite;
  97. else if(Session.GetInstance().GetBattleSession().IsAlly(craft.team))
  98. hpBar.sprite = allyHpBarSprite;
  99. else
  100. hpBar.sprite = oppHpBarSprite;
  101. }
  102. }