using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace TBTK{ public class UIHUD : UIScreen { public int maxUnitOrderItem; public List unitOrderList=new List(); [Space(8)] public UIButton buttonPerk; public UIButton buttonPause; public UIButton buttonEndTurn; private static UIHUD instance; public override void Awake(){ base.Awake(); instance=this; } //public override void Start(){ public new IEnumerator Start(){ if(TurnControl.IsUnitPerTurn()){ for(int i=0; i0) unitOrderList.Add(UIButton.Clone(unitOrderList[0].rootObj, "UnitOrderItem"+(i))); unitOrderList[i].Init(); //int idx=i; unitOrderList[i].button.onClick.AddListener(delegate { OnUnitOrderItem(idx); }); //unitOrderList[i].SetCallback(this.OnHoverUnitOrderItem, this.OnExitUnitOrderItem); unitOrderList[i].rootObj.SetActive(false); } } else unitOrderList[0].rootObj.SetActive(false); if(UIControl.EnablePerkMenu()){ buttonPerk.Init(); buttonPerk.button.onClick.AddListener(delegate { OnPerkButton(); }); } else buttonPerk.rootObj.SetActive(false); buttonPause.Init(); buttonPause.button.onClick.AddListener(delegate { OnPauseButton(); }); buttonEndTurn.Init(); buttonEndTurn.button.onClick.AddListener(delegate { OnEndTurnButton(); }); buttonEndTurn.SetActive(false); if(UnitManager.RequireManualDeployment()){ canvasGroup.interactable=false; canvasGroup.blocksRaycasts=false; canvasGroup.alpha=0; while(UnitManager.DeployingUnit()) yield return null; canvasGroup.interactable=true; canvasGroup.blocksRaycasts=true; } canvasGroup.alpha=1; } void OnEnable(){ TBTK.onSelectUnitE += OnSelectUnit ; TBTK.onActionInProgressE += OnActionInProgress ; TBTK.onNewTurnE += OnNewTurn ; TBTK.onUnitDestroyedE += OnUnitDestroyed ; TBTK.onUnitOrderChangedE += UpdateUnitOrderList ; } void OnDisable(){ TBTK.onSelectUnitE -= OnSelectUnit ; TBTK.onActionInProgressE -= OnActionInProgress ; TBTK.onNewTurnE -= OnNewTurn ; TBTK.onUnitDestroyedE -= OnUnitDestroyed ; TBTK.onUnitOrderChangedE -= UpdateUnitOrderList ; } void OnSelectUnit(Unit unit){ if(unit==null || !unit.playableUnit) return; buttonEndTurn.SetActive(true); if(UIControl.EnablePerkMenu()) buttonPerk.SetActive(true); } void OnActionInProgress(bool flag){ buttonEndTurn.button.interactable=!flag; if(UIControl.EnablePerkMenu()) buttonPerk.button.interactable=!flag; } void OnNewTurn(){ UpdateUnitOrderList(); } void OnUnitDestroyed(Unit unit){ UpdateUnitOrderList(); } void UpdateUnitOrderList(){ if(!TurnControl.IsUnitPerTurn()) return; List unitList=UnitManager.GetAllUnitList(); for(int i=0; i