137 lines
4.0 KiB
C#
137 lines
4.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace Thousandto.Launcher.Form
|
|
{
|
|
/// <summary>
|
|
/// 语言选择面板
|
|
/// </summary>
|
|
public class UILanguagePanel : IUIInnerPanelBase
|
|
{
|
|
#region //静态成员
|
|
private static Dictionary<string, string> _lanDict;
|
|
public static Dictionary<string, string> LanDict
|
|
{
|
|
get
|
|
{
|
|
if (_lanDict == null)
|
|
{
|
|
_lanDict = new Dictionary<string, string>();
|
|
_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<UIToggle> _toggleList = new List<UIToggle>();
|
|
//关闭回调
|
|
private Action<string> _callBack = null;
|
|
//当前选择的语言
|
|
private string _currentLan;
|
|
//语言列表
|
|
private string[] _lans;
|
|
|
|
//设置数据
|
|
public void SetData(string[] lans,Action<string> callBack)
|
|
{
|
|
_lans = lans;
|
|
_callBack = callBack;
|
|
}
|
|
|
|
protected override void OnInitialize()
|
|
{
|
|
_scrollView = Trans.Find("ScrollView").GetComponent<UIScrollView>();
|
|
_grid = Trans.Find("ScrollView/Grid").GetComponent<UIGrid>();
|
|
_template = Trans.Find("ScrollView/Grid/Temp");
|
|
_okBtn = Trans.Find("OkBtn").GetComponent<UIButton>();
|
|
|
|
_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<UIDragScrollView>().scrollView = _scrollView;
|
|
|
|
var toggle = go.GetComponent<UIToggle>();
|
|
_toggleList.Add(toggle);
|
|
toggle.group = 1;
|
|
toggle.startsActive = false;
|
|
|
|
var textLabel = go.transform.Find("Label").GetComponent<UILabel>();
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|