using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace TBTK{ public class UIAbilityFaction : 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 UIAbilityFaction 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, "FAbilityButton"+(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.onSelectFactionE += OnSelectFaction ; TBTK.onActionInProgressE += OnActionInProgressE ; TBTK.onAbilityTargetingE += OnAbilityTargeting ; } void OnDisable(){ TBTK.onSelectFactionE -= OnSelectFaction ; TBTK.onActionInProgressE -= OnActionInProgressE ; TBTK.onAbilityTargetingE -= OnAbilityTargeting ; } void OnSelectFaction(Faction fac){ UpdateDisplay(fac); } void OnActionInProgressE(bool flag){ for(int i=0; i=buttonList.Count) return; if(!buttonList[idx].button.interactable || !buttonList[idx].rootObj.activeInHierarchy) return; if(AbilityManager.IsWaitingForTargetF() && AbilityManager.GetSelectedIdx()==idx){ //buttonList[AbilityManager.GetSelectedIdx()].imgHighlight.gameObject.SetActive(false); AbilityManager.ExitAbilityTargetMode(); ClearSelection(); return; } ClearSelection(); UnitManager.GetSelectedFaction().SelectAbility(idx); } public void OnHoverButton(GameObject butObj){ int idx=0; for(int i=0; i=0){ if(ab==null || ab.isUnitAbility || ab.index!=curHighlightIdx) buttonList[curHighlightIdx].SetHighlight(false); } if(ab!=null && ab.isFacAbility){ curHighlightIdx=ab.index; buttonList[curHighlightIdx].SetHighlight(true); } } public static void UpdateDisplay(Faction fac){ instance._UpdateDisplay(fac); } public void _UpdateDisplay(Faction fac){ if(fac==null || !fac.playableFaction){ 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); StartCoroutine(SetOffset()); } IEnumerator SetOffset(){ yield return null; UIAbilityUnit.SetStartingOffset(buttonParentRectT.sizeDelta.x+200); } public static void ClearSelection(){ for(int i=0; i