using System;
using System.Collections.Generic;
using UnityEngine;
namespace Thousandto.Launcher.Form
{
///
/// 语言选择面板
///
public class UILanguagePanel : IUIInnerPanelBase
{
#region //静态成员
private static Dictionary _lanDict;
public static Dictionary LanDict
{
get
{
if (_lanDict == null)
{
_lanDict = new Dictionary();
_lanDict.Add("EN", "English");
_lanDict.Add("TH", "ภาษาไทย");
_lanDict.Add("CH", "中文");
_lanDict.Add("TW", "中文繁体");
_lanDict.Add("KR", "한글");
_lanDict.Add("VIE", "Tiếng Việt");
}
return _lanDict;
}
}
#endregion
//确认按钮
private UIButton _okBtn;
//滚动视图
private UIScrollView _scrollView;
//网格
private UIGrid _grid;
//模板
private Transform _template;
//选择列表
private List _toggleList = new List();
//关闭回调
private Action _callBack = null;
//当前选择的语言
private string _currentLan;
//语言列表
private string[] _lans;
//设置数据
public void SetData(string[] lans,Action callBack)
{
_lans = lans;
_callBack = callBack;
}
protected override void OnInitialize()
{
_scrollView = Trans.Find("ScrollView").GetComponent();
_grid = Trans.Find("ScrollView/Grid").GetComponent();
_template = Trans.Find("ScrollView/Grid/Temp");
_okBtn = Trans.Find("OkBtn").GetComponent();
_template.gameObject.SetActive(false);
_okBtn.onClick.Clear();
EventDelegate.Add(_okBtn.onClick, OnClickOkBtn);
InitScrollView();
}
protected override void OnRefresh()
{
for (int i = 0; i < _toggleList.Count; i++)
{
if (_lans != null && Array.IndexOf(_lans, _toggleList[i].gameObject.name) >= 0)
{
_toggleList[i].gameObject.SetActive(true);
}
else
{
_toggleList[i].gameObject.SetActive(false);
}
}
}
protected override void OnHideAfter()
{
if (_callBack != null) _callBack(_currentLan);
base.OnHideAfter();
}
private void InitScrollView()
{
_toggleList.Clear();
var e = LanDict.GetEnumerator();
while (e.MoveNext())
{
var go = NGUITools.AddChild(_grid.gameObject, _template.gameObject);
go.SetActive(true);
go.AddComponent().scrollView = _scrollView;
var toggle = go.GetComponent();
_toggleList.Add(toggle);
toggle.group = 1;
toggle.startsActive = false;
var textLabel = go.transform.Find("Label").GetComponent();
textLabel.text = e.Current.Value;
go.name = e.Current.Key;
toggle.onChange.Clear();
EventDelegate.Add(toggle.onChange, OnToggleChange);
}
_grid.Reposition();
if (_toggleList.Count > 0)
_toggleList[0].Set(true);
}
private void OnClickOkBtn()
{
Hide();
}
private void OnToggleChange()
{
var current = UIToggle.current;
if (current.value)
{
_currentLan = current.gameObject.name;
}
}
}
}