using UnityEngine; using UnityEngine.UI; using System.Collections; public class TopHeadBar : MonoBehaviour { public Image icon; public Text timeTxt; public Image hpBar; public Sprite myHpBarSprite; public Sprite allyHpBarSprite; public Sprite oppHpBarSprite; private Player player; private Craft craft; void Awake() { OnCraftChanged (); } public void SetPlayer(Player player) { if (player != null) player.GetHero().CraftChanged.RemoveListener (OnCraftChanged); this.player = player; this.player.GetHero().CraftChanged.AddListener (OnCraftChanged); OnCraftChanged (); } public Player GetPlayer() { return this.player; } private void OnCraftChanged () { Dispose(); if(player != null && player.GetHero().GetCraft() != null) { this.craft = player.GetHero().GetCraft(); craft.Killed += OnKilled; craft.HpChanged += OnHpChanged; craft.OnSwapped += OnSwapped; timeTxt.enabled = false; hpBar.enabled = true; icon.enabled = true; OnCtrlChanged (); OnHpChanged(); OnSwapped(); } else { this.craft = null; icon.enabled = hpBar.enabled = false; timeTxt.enabled = true; timeTxt.text = "--"; } } public void Refresh() { } void OnDestroy() { if (player != null) player.GetHero().CraftChanged.RemoveListener (OnCraftChanged); Dispose(); } public void Dispose() { if(craft != null) { craft.Killed -= OnKilled; craft.HpChanged -= OnHpChanged; craft.OnSwapped -= OnSwapped; craft.OnCtrlChanged -= OnCtrlChanged; } } private void OnSwapped() { if(craft != null) { icon.sprite = Resources.Load(craft.GetIcon()); } } private void OnKilled() { icon.enabled = false; timeTxt.enabled = true; timeTxt.text = Player.heroReliveHoldTime.ToString(); hpBar.fillAmount = 0; } private void OnHpChanged() { if(craft != null) { hpBar.fillAmount = craft.hp / craft.maxHp; } } private void OnCtrlChanged() { if(craft.IsCtrl()) hpBar.sprite = myHpBarSprite; else if(Session.GetInstance().GetBattleSession().IsAlly(craft.team)) hpBar.sprite = allyHpBarSprite; else hpBar.sprite = oppHpBarSprite; } }