using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using wf; public class SelectButtonCtrl : MonoBehaviour { public void Awake() { if (this.Panel == null) { this.Panel = base.transform.parent.gameObject.GetComponent(); } this.grid = base.GetComponent(); this.scrollView = base.transform.parent.GetComponent(); } public void CreateSelectButtons(List>> listSelectBtn, Action onClickCallBack, UnityEngine.Object selectBtnPrefab) { this.grid.cellHeight = 0f; this.m_OnClickCallBack = null; this.m_OnClickCallEvent = null; this.ClearExistSelectButton(); this.m_OnClickCallBack = onClickCallBack; this.m_listSelectBtn = new List>(); int num = 0; foreach (KeyValuePair> keyValuePair in listSelectBtn) { GameObject gameObject = UnityEngine.Object.Instantiate(selectBtnPrefab) as GameObject; for (int i = 0; i < gameObject.transform.childCount; i++) { UIButton component = gameObject.transform.GetChild(i).GetComponent(); EventDelegate.Add(component.onClick, new EventDelegate.Callback(this.ClickSelectButton)); component.isEnabled = keyValuePair.Value.Value; } gameObject.name = "selectButton_" + num; gameObject.transform.parent = base.transform; gameObject.transform.localScale = Vector3.one; gameObject.transform.localPosition = Vector3.zero; gameObject.transform.rotation = Quaternion.identity; SubtitleDisplayManager component2 = gameObject.GetComponent(); if (component2 != null) { component2.SetTextFromScriptStyle(keyValuePair.Key); } else { UILabel component3 = UTY.GetChildObject(gameObject, "Single/Option", false).GetComponent(); component3.text = keyValuePair.Key; } SelectButtonCtrl.SelectButton selectButton = new SelectButtonCtrl.SelectButton(); selectButton.m_btnName = gameObject.name; selectButton.m_goSelectBtn = gameObject; selectButton.m_msg = keyValuePair.Key; selectButton.m_tag = keyValuePair.Value.Key; if (GameMain.Instance.VRMode) { UIButton[] componentsInChildren = gameObject.GetComponentsInChildren(true); foreach (UIButton uibutton in componentsInChildren) { uibutton.defaultColor = new Color(0.8f, 0.8f, 0.8f, 1f); } } this.m_listSelectBtn.Add(new KeyValuePair(selectButton.m_btnName, selectButton)); num++; } Utility.ResetNGUI(this.grid); this.scrollView.verticalScrollBar.gameObject.SetActive(true); Utility.ResetNGUI(this.scrollView); this.scrollView.verticalScrollBar.value = 0f; this.scrollView.verticalScrollBar.alpha = 0f; this.m_EffectStat = SelectButtonCtrl.EffectStat.Null; base.StartCoroutine("FadeIn"); } private IEnumerator FadeIn() { this.scrollView.GetComponent().alpha = 0f; yield return null; yield return null; this.scrollView.GetComponent().alpha = 1f; yield break; } public void SetPanelAlpha(float value) { this.Awake(); this.Panel.alpha = value; } public bool IsPlayingEffect() { return this.m_EffectStat != SelectButtonCtrl.EffectStat.Null; } public void ClearExistSelectButton() { IEnumerator enumerator = base.transform.GetEnumerator(); try { while (enumerator.MoveNext()) { object obj = enumerator.Current; Transform transform = (Transform)obj; UnityEngine.Object.Destroy(transform.gameObject); } } finally { IDisposable disposable; if ((disposable = (enumerator as IDisposable)) != null) { disposable.Dispose(); } } } public void ClickSelectButton() { string b = string.Empty; b = UIButton.current.transform.parent.name; foreach (KeyValuePair keyValuePair in this.m_listSelectBtn) { GameObject goSelectBtn = keyValuePair.Value.m_goSelectBtn; if (keyValuePair.Key == b) { TweenAlpha tweenAlpha; if (GameMain.Instance.ScriptMgr.adv_kag.skip_mode) { tweenAlpha = TweenAlpha.Begin(goSelectBtn, 0.01f, 0f); } else { tweenAlpha = TweenAlpha.Begin(keyValuePair.Value.m_goSelectBtn, 1f * GameMain.Instance.CMSystem.FadeSpeedRate, 0f); } EventDelegate.Set(tweenAlpha.onFinished, new EventDelegate.Callback(this.OnFinished)); if (this.m_OnClickCallBack != null) { string text = keyValuePair.Value.m_msg; string tag = keyValuePair.Value.m_tag; Action tmp = this.m_OnClickCallBack; this.m_OnClickCallEvent = delegate() { tmp(text, tag); }; this.m_OnClickCallBack = null; } } else { for (int i = 0; i < goSelectBtn.transform.childCount; i++) { TweenAlpha component = goSelectBtn.transform.GetChild(i).GetComponent(); component.onFinished = null; } if (GameMain.Instance.ScriptMgr.adv_kag.skip_mode) { TweenAlpha.Begin(goSelectBtn, 0.01f, 0f); } else { TweenAlpha.Begin(goSelectBtn, 0.3f * GameMain.Instance.CMSystem.FadeSpeedRate, 0f); } } BoxCollider[] componentsInChildren = goSelectBtn.GetComponentsInChildren(); foreach (BoxCollider boxCollider in componentsInChildren) { boxCollider.enabled = false; } } this.scrollView.verticalScrollBar.alpha = 0f; this.scrollView.verticalScrollBar.gameObject.SetActive(false); this.m_EffectStat = SelectButtonCtrl.EffectStat.EndOut; } private void OnFinished() { if (this.dragMat == null) { this.dragMat = base.transform.parent.parent.Find("DragMat").gameObject; } this.dragMat.SetActive(false); this.ClearExistSelectButton(); this.grid.cellHeight = 93f; Utility.ResetNGUI(this.scrollView); this.scrollView.verticalScrollBar.alpha = 0f; this.scrollView.verticalScrollBar.value = 0f; this.scrollView.verticalScrollBar.gameObject.SetActive(false); this.m_EffectStat = SelectButtonCtrl.EffectStat.Null; if (this.m_OnClickCallEvent != null) { this.m_OnClickCallEvent(); } this.m_OnClickCallEvent = null; } private void Update() { if (this.scrollRest) { Utility.ResetNGUI(this.scrollView); this.scrollView.verticalScrollBar.value = 0f; this.scrollView.verticalScrollBar.alpha = 0f; this.scrollView.verticalScrollBar.ForceUpdate(); this.scrollRest = false; } if (GameMain.Instance.CMSystem.SubtitleType == SubtitleDisplayManager.DisplayType.OriginalAndSubtitle && this.grid.cellHeight != 110f) { this.grid.cellHeight = 110f; Utility.ResetNGUI(this.grid); this.scrollRest = true; } else if (GameMain.Instance.CMSystem.SubtitleType != SubtitleDisplayManager.DisplayType.OriginalAndSubtitle && this.grid.cellHeight != 93f) { this.grid.cellHeight = 93f; Utility.ResetNGUI(this.grid); this.scrollRest = true; } } [SerializeField] private GameObject dragMat; private UIPanel Panel; private List> m_listSelectBtn; private Action m_OnClickCallBack; private Action m_OnClickCallEvent; private SelectButtonCtrl.EffectStat m_EffectStat; private UIGrid grid; private UIScrollView scrollView; private bool scrollRest; private enum EffectStat { Null, StartIn, EndOut } private class SelectButton { public string m_btnName { get; set; } public string m_msg { get; set; } public string m_tag { get; set; } public GameObject m_goSelectBtn { get; set; } public override string ToString() { return string.Format("SelectButton=[m_btnName={0}, m_msg={1}, m_tag={2}, m_goSelectBtn={3}]", new object[] { this.m_btnName, this.m_msg, this.m_tag, this.m_goSelectBtn }); } } }