using System; using System.Collections; using System.Collections.Generic; using I2.Loc; using UnityEngine; using wf; public class PopupAndTabList : MonoBehaviour { public virtual void Awake() { this.is_select_func_call_ = true; this.PopUpList.onChangePopUpListValue.Add(new Action>(this.OnChangePopUpList)); } public virtual void Start() { } public void ResaveButton(int element) { NDebug.Assert(this.TabPanel.gameObject.transform.childCount == 0, "eorro"); for (int i = 0; i < element; i++) { GameObject gameObject = Utility.CreatePrefab(this.TabPanel.gameObject, "ScenePhotoMode/WindowListItem", true); gameObject.name = i.ToString(); gameObject.GetComponentInChildren().text = gameObject.name; EventDelegate.Add(gameObject.GetComponent().onSelect, new EventDelegate.Callback(this.OnSelectItem)); } Transform transform = base.transform; BasePhotoWindow component; do { component = transform.GetComponent(); transform = transform.parent; } while (component == null); component.UpdateChildren(); this.TabPanel.UpdateChildren(); for (int j = 0; j < this.TabPanel.transform.childCount; j++) { this.TabPanel.transform.GetChild(j).gameObject.SetActive(false); } } public void ResaveButton(Dictionary popup_and_button_name_list, int magnification) where T : ICollection { NDebug.Assert(this.TabPanel.gameObject.transform.childCount == 0, "eorro"); int num = 0; foreach (KeyValuePair keyValuePair in popup_and_button_name_list) { int num2 = num; T value = keyValuePair.Value; if (num2 < value.Count) { T value2 = keyValuePair.Value; num = value2.Count; } } num *= magnification; for (int i = 0; i < num; i++) { GameObject gameObject = Utility.CreatePrefab(this.TabPanel.gameObject, "ScenePhotoMode/WindowListItem", true); gameObject.name = i.ToString(); gameObject.GetComponentInChildren().text = gameObject.name; EventDelegate.Add(gameObject.GetComponent().onSelect, new EventDelegate.Callback(this.OnSelectItem)); } Transform transform = base.transform; BasePhotoWindow component; do { component = transform.GetComponent(); transform = transform.parent; } while (component == null); component.UpdateChildren(); this.TabPanel.UpdateChildren(); for (int j = 0; j < this.TabPanel.transform.childCount; j++) { this.TabPanel.transform.GetChild(j).gameObject.SetActive(false); } } public void SetData(Dictionary>> popup_and_button_name_list, Dictionary> buttonTermList, bool create_margin = false) { if (popup_and_button_name_list != null && this.TabPanel.gameObject.transform.childCount == 0) { this.ResaveButton>>(popup_and_button_name_list, create_margin ? 3 : 1); } this.popup_and_button_name_list_ = new Dictionary>(); if (popup_and_button_name_list == null) { this.ResetSelect(); this.cur_select_btn_name_ = string.Empty; return; } foreach (KeyValuePair>> keyValuePair in popup_and_button_name_list) { List list = null; if (buttonTermList != null && buttonTermList.ContainsKey(keyValuePair.Key)) { list = buttonTermList[keyValuePair.Key]; } List list2 = new List(); for (int i = 0; i < keyValuePair.Value.Count; i++) { list2.Add(new PopupAndTabList.ElementData { draw_title = keyValuePair.Value[i].Key, term = ((list == null) ? string.Empty : list[i]), guid = Guid.NewGuid(), value = keyValuePair.Value[i].Value }); } this.popup_and_button_name_list_.Add(keyValuePair.Key, list2); } } public void AddData(string popup_category_name, KeyValuePair value_data) { List list = this.popup_and_button_name_list_[popup_category_name]; list.Add(new PopupAndTabList.ElementData { draw_title = value_data.Key, guid = Guid.NewGuid(), value = value_data.Value }); } public void ResetSelect() { if (this.TabPanel.GetSelectButtonObject() != null) { this.TabPanel.GetSelectButtonObject().SetSelect(false); } this.TabPanel.ResetSelect(); } protected void OnChangePopUpList(KeyValuePair popup_val) { if (this.TabPanel.GetSelectButtonObject() != null) { this.cur_select_btn_name_ = this.TabPanel.GetSelectButtonObject().name; } this.TabPanel.ResetSelect(); UIGrid component = this.TabPanel.GetComponent(); for (int i = 0; i < this.TabPanel.transform.childCount; i++) { this.TabPanel.transform.GetChild(i).GetComponent().SetSelect(false); this.TabPanel.transform.GetChild(i).gameObject.name = string.Empty; this.TabPanel.transform.GetChild(i).gameObject.SetActive(false); } if (this.popup_and_button_name_list_ == null || !this.popup_and_button_name_list_.ContainsKey(popup_val.Key)) { component.Reposition(); this.ScrollView.ResetPosition(); this.cur_select_btn_name_ = string.Empty; for (int j = 0; j < this.onChangePopUpListValue.Count; j++) { this.onChangePopUpListValue[j](popup_val); } return; } UIWFTabButton uiwftabButton = null; List list = this.popup_and_button_name_list_[popup_val.Key]; for (int k = 0; k < list.Count; k++) { GameObject gameObject = this.TabPanel.transform.GetChild(k).gameObject; gameObject.SetActive(true); gameObject.name = list[k].guid.ToString(); gameObject.GetComponentInChildren().text = list[k].draw_title; if (Product.supportMultiLanguage) { Localize componentInChildren = gameObject.GetComponentInChildren(); if (componentInChildren != null) { componentInChildren.enabled = !string.IsNullOrEmpty(list[k].term); if (componentInChildren.enabled) { componentInChildren.SetTerm(list[k].term); } } } if (gameObject.name == this.cur_select_btn_name_) { uiwftabButton = gameObject.GetComponent(); } } component.Reposition(); this.ScrollView.ResetPosition(); if (uiwftabButton != null) { this.is_select_func_call_ = false; this.TabPanel.Select(uiwftabButton); this.is_select_func_call_ = true; } for (int l = 0; l < this.onChangePopUpListValue.Count; l++) { this.onChangePopUpListValue[l](popup_val); } } private void OnSelectItem() { if (!UIWFSelectButton.current.isSelected) { return; } this.cur_select_btn_name_ = UIWFSelectButton.current.gameObject.name; if (this.is_select_func_call_) { foreach (KeyValuePair> keyValuePair in this.popup_and_button_name_list_) { for (int i = 0; i < keyValuePair.Value.Count; i++) { if (this.cur_select_btn_name_ == keyValuePair.Value[i].guid.ToString()) { for (int j = 0; j < this.onSelect.Count; j++) { this.onSelect[j](keyValuePair.Value[i].value); } } } } } } public virtual bool SetPopupValue(string name) { return this.PopUpList.SetPopupValue(name); } public virtual string GetCategoryNameFromSelectButton(object value_object) { if (value_object == null) { return string.Empty; } foreach (KeyValuePair> keyValuePair in this.popup_and_button_name_list_) { for (int i = 0; i < keyValuePair.Value.Count; i++) { if (keyValuePair.Value[i].value == value_object) { return keyValuePair.Key; } } } return string.Empty; } public virtual bool SetSelectButton(object value_object, bool fire_event) { if (value_object == null) { return false; } PopupAndTabList.ElementData elementData = null; string categoryNameFromSelectButton = this.GetCategoryNameFromSelectButton(value_object); if (!string.IsNullOrEmpty(categoryNameFromSelectButton)) { int num = 0; while (num < this.popup_and_button_name_list_[categoryNameFromSelectButton].Count && elementData == null) { if (this.popup_and_button_name_list_[categoryNameFromSelectButton][num].value == value_object) { elementData = this.popup_and_button_name_list_[categoryNameFromSelectButton][num]; } num++; } } if (elementData == null) { return false; } string key = this.PopUpList.popup_select_value.Key; if (key != categoryNameFromSelectButton) { this.SetPopupValue(categoryNameFromSelectButton); } bool result = false; Transform transform = this.TabPanel.transform; for (int i = 0; i < transform.childCount; i++) { if (transform.GetChild(i).gameObject.name == elementData.guid.ToString()) { this.is_select_func_call_ = fire_event; this.TabPanel.Select(transform.GetChild(i).GetComponent()); this.is_select_func_call_ = true; result = true; break; } } if (key != categoryNameFromSelectButton) { this.SetPopupValue(key); } return result; } public List popup_term_list { get { return this.PopUpList.PopupList.itemTerms; } set { this.PopUpList.PopupList.itemTerms = value; this.PopUpList.PopupList.isLocalized = (value != null && 0 < value.Count); } } public List> popup_value_list { get { return this.PopUpList.popup_value_list; } set { this.PopUpList.popup_value_list = value; } } public WindowPartsPopUpList PopUpList; public UIWFTabPanel TabPanel; public UIScrollView ScrollView; public List>> onChangePopUpListValue = new List>>(); public List> onSelect = new List>(); private Dictionary> popup_and_button_name_list_; private string cur_select_btn_name_; private bool is_select_func_call_; private class ElementData { public Guid guid; public string draw_title; public string term; public object value; } }