using UnityEngine; using UnityEngine.UI; using System.Collections; public class HeadBar : MonoBehaviour { public Image bar; public Text text; public Animator radioAnim; public Sprite[] bgList; public GameObject spellBar; public Image spellProgress; private BattleObject owner; private RectTransform rectTrans; private RectTransform canvasTrans; public void Init(BattleObject owner) { if(Session.GetInstance().GetBattleSession() == null) { Destroy(this.gameObject); } this.owner = owner; rectTrans = GetComponent (); rectTrans.SetSiblingIndex(0); canvasTrans = GameObject.FindObjectOfType ().GetComponent(); HideSpell(); UpdateHpBar(); LateUpdate(); } public void UpdateColor() { Player myPlayer = Session.GetInstance().GetBattleSession().myPlayer; if(owner is Craft && (owner as Craft).IsCtrl()) { bar.sprite = bgList[0]; } else if(myPlayer.team == owner.team) { bar.sprite = bgList[1]; } else { bar.sprite = bgList[2]; } } public void RadioAlert() { radioAnim.Play("RadioAlertShow", 0, 0); } // Update is called once per frame void LateUpdate () { if(owner != null) { if(owner.IsDead()) { Destroy(this.gameObject); } else { UpdatePosition(); } } } private void UpdatePosition() { Vector3 position = owner.position; position.y += owner.headBarHeight; position.z += owner.headBarHeight; Vector3 screenPosition = Camera.main.WorldToScreenPoint(position); position.x = screenPosition.x/(float)Screen.width; position.y = screenPosition.y/(float)Screen.height; position.x = position.x*canvasTrans.sizeDelta.x - canvasTrans.sizeDelta.x/2f; position.y = position.y*canvasTrans.sizeDelta.y - canvasTrans.sizeDelta.y/2f; position.z = 0; rectTrans.anchoredPosition = position; } public void UpdateHpBar() { float percent = owner.hp/owner.maxHp; bar.fillAmount = percent; } public void SetSpellProgress(float value, float total) { if(!spellBar.activeInHierarchy) spellBar.SetActive(true); float percent = value/total; spellProgress.fillAmount = Mathf.Min(percent, 1f); } public void HideSpell() { spellBar.SetActive(false); } }