using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using UnityEngine.Events; namespace Assets.Scripts.UI.Control { public class PFUIDropdown : PFUIComponentBase,IPointerClickHandler { private int mSelectedIndex = 0; public int SelectedIndex { get { return this.mSelectedIndex; } } //public int Value //{ // get // { // return this.GetComponent().value; // } // set // { // this.GetComponent().value = value; // } //} public string SelectedItem { get { if(this.mSelectedIndex >= 0) { return this.GetComponent().options[this.mSelectedIndex].text; } return null; } } private UnityAction mOnValueChange; public UnityAction OnValueChange { get { return mOnValueChange; } set { mOnValueChange = value; } } private Outline outline; void Awake() { //this.mSelectedIndex = UIManager.AddEvent(this.transform.GetComponent().gameObject, EventTriggerType.Select, (b)=> { App.isChanged = true; }); //UIManager.AddEvent(this.transform.GetComponent().gameObject, EventTriggerType.Deselect, new UnityEngine.Events.UnityAction(OnDeselect)); //this.GetComponent().itemText.color = Utils.HexToColorHtml("#ff2742"); this.GetComponent().onValueChanged.AddListener(i => { mSelectedIndex = i; if (OnValueChange != null) { mOnValueChange(i); } SetWhite(i); outline.enabled = false; }); SetWhite(this.GetComponent().value); outline = transform.GetComponent(); } public void SetWhite(int index) { if (index != -1 && this.GetComponent().interactable) { this.GetComponent().captionText.color = Utils.HexToColorHtml("#ffffff"); } } public void SetValidate() { outline.enabled = true; } //public void SetValidate(string s) //{ // outline.gameObject.SetActive(true); //} public void OnSelect(BaseEventData eventData) { var image = this.transform.GetComponent(); var png = Resources.Load("Images/ipt-1"); image.sprite = png; App.isChanged = true; } public void OnDeselect(BaseEventData eventData) { var image = this.transform.GetComponent(); var png1 = Resources.Load("Images/ipt-0"); image.sprite = png1; } public void AddOptions(List options) { this.GetComponent().AddOptions(options); } public void AddOptions(List options) { this.GetComponent().AddOptions(options); } public void ClearOptions() { this.GetComponent().ClearOptions(); } public void SelectIndex(int index) { this.GetComponent().value = index; this.mSelectedIndex = index; } public void SelectValue(string value) { var options = this.GetComponent().options; for (int i = 0; i < options.Count; i++) { if(options[i].text == value) { SelectIndex(i); return; } } } public void OnPointerClick(PointerEventData eventData) { if (GetComponent().value == -1 || !GetComponent().interactable) return; var x = transform.Find("Dropdown List").GetComponent().content; x.GetChild(SelectedIndex + 1).Find("Item Label").GetComponent().color = Utils.HexToColorHtml("#f93086"); } } }