136 lines
3.7 KiB
C#

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
{
private int mSelectedIndex = 0;
public int SelectedIndex
{
get
{
return this.mSelectedIndex;
}
}
//public int Value
//{
// get
// {
// return this.GetComponent<Dropdown>().value;
// }
// set
// {
// this.GetComponent<Dropdown>().value = value;
// }
//}
public string SelectedItem
{
get
{
if(this.mSelectedIndex >= 0)
{
return this.GetComponent<Dropdown>().options[this.mSelectedIndex].text;
}
return null;
}
}
private UnityAction<int> mOnValueChange;
public UnityAction<int> OnValueChange
{
get
{
return mOnValueChange;
}
set
{
mOnValueChange = value;
}
}
private Outline outline;
void Awake()
{
//this.mSelectedIndex =
//UIManager.AddEvent(this.transform.GetComponent<Image>().gameObject, EventTriggerType.Select, new UnityEngine.Events.UnityAction<BaseEventData>(OnSelect));
//UIManager.AddEvent(this.transform.GetComponent<Image>().gameObject, EventTriggerType.Deselect, new UnityEngine.Events.UnityAction<BaseEventData>(OnDeselect));
this.GetComponent<Dropdown>().onValueChanged.AddListener(i => {
mSelectedIndex = i;
if (OnValueChange != null)
{
mOnValueChange(i);
}
outline.enabled = false;
});
outline = transform.GetComponent<Outline>();
}
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<Image>();
var png = Resources.Load<Sprite>("Images/ipt-1");
image.sprite = png;
}
public void OnDeselect(BaseEventData eventData)
{
var image = this.transform.GetComponent<Image>();
var png1 = Resources.Load<Sprite>("Images/ipt-0");
image.sprite = png1;
}
public void AddOptions(List<Dropdown.OptionData> options)
{
this.GetComponent<Dropdown>().AddOptions(options);
}
public void AddOptions(List<string> options)
{
this.GetComponent<Dropdown>().AddOptions(options);
}
public void ClearOptions()
{
this.GetComponent<Dropdown>().ClearOptions();
}
public void SelectIndex(int index)
{
this.GetComponent<Dropdown>().value = index;
this.mSelectedIndex = index;
}
public void SelectValue(string value)
{
var options = this.GetComponent<Dropdown>().options;
for (int i = 0; i < options.Count; i++)
{
if(options[i].text == value)
{
SelectIndex(i);
return;
}
}
}
}
}