using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace TBTK{ public class UIAbilityUnit : UIScreen { private RectTransform buttonParentRectT; public static void SetStartingOffset(float value){ instance.buttonParentRectT.localPosition=new Vector2(value, instance.buttonParentRectT.localPosition.y); } public int buttonLimit=8; public List buttonList=new List(); private static UIAbilityUnit instance; public override void Awake(){ base.Awake(); instance=this; } public override void Start(){ for(int i=0; i0) buttonList.Add(UIButton.Clone(buttonList[0].rootObj, "UAbilityButton"+(i))); buttonList[i].Init(); int idx=i; buttonList[i].button.onClick.AddListener(delegate { OnButton(idx); }); buttonList[i].SetCallback(this.OnHoverButton, this.OnExitButton); //~ cooldownSlider.Add(abilityButtons[idx].rootT.GetChild(0).gameObject.GetComponent()); buttonList[i].SetActive(false); } buttonParentRectT=buttonList[0].rootT.parent.GetComponent(); buttonParentRectT.gameObject.SetActive(false); canvasGroup.alpha=1; } void OnEnable(){ TBTK.onSelectUnitE += OnSelectUnit ; TBTK.onActionInProgressE += OnActionInProgressE ; TBTK.onAbilityTargetingE += OnAbilityTargeting ; } void OnDisable(){ TBTK.onSelectUnitE -= OnSelectUnit ; TBTK.onActionInProgressE -= OnActionInProgressE ; TBTK.onAbilityTargetingE -= OnAbilityTargeting ; } void OnSelectUnit(Unit unit){ UpdateDisplay(unit); } void OnActionInProgressE(bool flag){ for(int i=0; i=buttonList.Count) return; if(!buttonList[idx].button.interactable || !buttonList[idx].rootObj.activeInHierarchy) return; if(AbilityManager.IsWaitingForTargetU() && AbilityManager.GetSelectedIdx()==idx){ //buttonList[AbilityManager.GetSelectedIdx()].imgHighlight.gameObject.SetActive(false); AbilityManager.ExitAbilityTargetMode(); ClearSelection(); return; } //ClearSelection(); buttonList[idx].SetHighlight(true); UnitManager.GetSelectedUnit().SelectAbility(idx); } public void OnHoverButton(GameObject butObj){ int idx=0; for(int i=0; i=0){ if(ab==null || ab.isFacAbility || ab.index!=curHighlightIdx) buttonList[curHighlightIdx].SetHighlight(false); } if(ab!=null && ab.isUnitAbility){ curHighlightIdx=ab.index; buttonList[curHighlightIdx].SetHighlight(true); } } public static void UpdateDisplay(Unit unit){ instance._UpdateDisplay(unit); } public void _UpdateDisplay(Unit unit){ if(unit==null || !unit.playableUnit){ buttonParentRectT.gameObject.SetActive(false); //for(int i=0; i0 ? ab.currentCD.ToString() : "" ; buttonList[i].SetHighlight(false); buttonList[i].button.interactable=(abilityStatus==Ability._AbilityStatus.Ready); activeCount+=1; } buttonList[i].SetActive(i0); } public static void ClearSelection(){ for(int i=0; i