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