Files
2025-01-25 04:38:09 +08:00

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;
}
}
}
}