using FairyGUI; using UI.FieldGuide; using UI.CommonGame; using System.Collections.Generic; using UI.ClothingSynthetic; using UnityEngine; using System.Collections; namespace GFGGame { public class SuitGuideView : BaseWindow { private UI_SuitGuideUI _ui; private Dictionary> _menuTypeAllDataDic; private List _suitTypeItems; public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_SuitGuideUI.PACKAGE_NAME; _ui = UI_SuitGuideUI.Create(); this.viewCom = _ui.target; isfullScreen = true; isReturnView = true; _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("tjbg"); _ui.m_suitTypeList.itemRenderer = RenderListSuitType; _ui.m_suitTypeList.numItems = _ui.m_suitTypeList.numItems; _ui.m_btnBack.onClick.Add(OnClickBtnBack); _ui.m_suitType2Items.itemRenderer = RenderListSuitType2Item; _ui.m_suitType2Items.onClickItem.Add(OnClickListSuitType2Item); _ui.m_suitTypeList.onClick.Add(OnClickListSuitType); InitSuitGuideType(); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.JUMP_TO_SOURCE, this.Hide); } protected override void OnShown() { base.OnShown(); UpdateItemsByType(1); UpdateListSuitTypeRedDots(); Timers.inst.StartCoroutine(UpdateRedDot()); } protected override void OnHide() { base.OnHide(); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.JUMP_TO_SOURCE, this.Hide); } /// /// 初始化上方选择菜单,同步按钮按下和普通状态的文本 /// /// /// private void RenderListSuitType(int index, GObject item) { UI_Button6 button6 = UI_Button6.Proxy(item); button6.m_title1.text = button6.target.title; UI_Button6.ProxyEnd(); } private void OnClickListSuitType(EventContext eventContext) { UpdateItemsByType(_ui.m_c1.selectedIndex + 1); Timers.inst.StartCoroutine(UpdateRedDot()); } /// /// 更新选择菜单的红点 /// private void UpdateListSuitTypeRedDots() { for (int j = 0; j < _ui.m_suitTypeList.numItems; j++) { RedDotController.Instance.SetComRedDot(_ui.m_suitTypeList.GetChildAt(j).asCom, false); for (int i = 0; i < _menuTypeAllDataDic[j + 1].Count; i++) { bool red = RedDotDataManager.Instance.GetSuitGuideRed(_menuTypeAllDataDic[j + 1][i]); if (red) { RedDotController.Instance.SetComRedDot(_ui.m_suitTypeList.GetChildAt(j).asCom, red, "", -65, 16); break; } } } } private void UpdateItemsByType(int type) { _ui.m_c1.SetSelectedIndex(type - 1); switch (type) { case 1: UpdateType1Progress(); break; case 2: _ui.m_suitType2Items.numItems = _menuTypeAllDataDic[type].Count; break; } } private void InitSuitGuideType() { _suitTypeItems = new List(); _menuTypeAllDataDic = new Dictionary>(); SuitGuideMenuCfg[] menuCfgs = SuitGuideMenuCfgArray.Instance.dataArray; foreach (SuitGuideMenuCfg s in menuCfgs) { if (!_menuTypeAllDataDic.ContainsKey(s.SuitGuideMenuType)) { _menuTypeAllDataDic.Add(s.SuitGuideMenuType, new List()); } _menuTypeAllDataDic[s.SuitGuideMenuType].Add(s.id); } InitSuitType1Item(_ui.m_suitTypeItems.m_item1, _menuTypeAllDataDic[1][0]); InitSuitType1Item(_ui.m_suitTypeItems.m_item2, _menuTypeAllDataDic[1][1]); InitSuitType1Item(_ui.m_suitTypeItems.m_item3, _menuTypeAllDataDic[1][2]); InitSuitType1Item(_ui.m_suitTypeItems.m_item4, _menuTypeAllDataDic[1][3]); InitSuitType1Item(_ui.m_suitTypeItems.m_item5, _menuTypeAllDataDic[1][4]); InitSuitType1Item(_ui.m_suitTypeItems.m_item6, _menuTypeAllDataDic[1][5]); InitSuitType1Item(_ui.m_suitTypeItems.m_item7, _menuTypeAllDataDic[1][6]); } /// /// 初始化种类1 /// /// /// private void InitSuitType1Item(UI_SuitTypeItem item, int typeId) { SuitGuideMenuCfg cfg = SuitGuideMenuCfgArray.Instance.GetCfg(typeId); item.m_title.text = cfg.name; item.target.data = typeId; item.m_icon.url = string.Format("ui://FieldGuide/tj_tz_{0}", typeId); item.target.onClick.Add(() => { ViewManager.Show(typeId, new object[] { typeof(SuitGuideView).FullName, this.viewData }); }); _suitTypeItems.Add(item); } /// /// 由于type1页面未使用列表,所以需要循环更新进度 /// private void UpdateType1Progress() { for (int i = 0; i < _suitTypeItems.Count; i++) { int _suitTypeId = (int)_suitTypeItems[i].target.data; int haveCount = SuitUtil.GetSuitIdList(false, true, _suitTypeId, 0).Count; int totalCount = SuitUtil.GetSuitIdList(true, true, _suitTypeId, 0).Count; _suitTypeItems[i].m_progress.target.value = haveCount; _suitTypeItems[i].m_progress.target.max = totalCount; _suitTypeItems[i].m_progress.m_num.SetVar("value", haveCount.ToString()).SetVar("max", totalCount.ToString()).FlushVars(); _suitTypeItems[i].m_progress.m_rate.SetVar("rate", FieldGuideView.ProgressCalculate(haveCount, totalCount).ToString()).FlushVars(); } } /// /// 初始化种类2 /// /// /// private void RenderListSuitType2Item(int index, GObject gObject) { UI_SuitStoryItem item = UI_SuitStoryItem.Proxy(gObject); SuitGuideMenuCfg cfg = SuitGuideMenuCfgArray.Instance.GetCfg(_menuTypeAllDataDic[_ui.m_c1.selectedIndex + 1][index]); item.m_title.text = cfg.name; int haveCount = SuitUtil.GetSuitIdList(false, true, _menuTypeAllDataDic[_ui.m_c1.selectedIndex + 1][index], 0).Count; int totalCount = SuitUtil.GetSuitIdList(true, true, _menuTypeAllDataDic[_ui.m_c1.selectedIndex + 1][index], 0).Count; item.m_progressNum.SetVar("value", haveCount.ToString()).SetVar("max", totalCount.ToString()).FlushVars(); UI_SuitStoryItem.ProxyEnd(); } private void OnClickListSuitType2Item(EventContext eventContext) { GObject obj = eventContext.data as GObject; int index = _ui.m_suitType2Items.GetChildIndex(obj); ViewManager.Show(_menuTypeAllDataDic[_ui.m_c1.selectedIndex + 1][index], new object[] { typeof(SuitGuideView).FullName, this.viewData }); } private void OnClickBtnBack() { _ui.m_c1.SetSelectedIndex(0); _ui.m_suitTypeItems.target.scrollPane.ScrollTop(); ViewManager.GoBackFrom(typeof(SuitGuideView).FullName); } private IEnumerator UpdateRedDot() { int selectedIndex = _ui.m_c1.selectedIndex + 1; // Hide all existed red dots HideSelectedPageRedDot(); Transition t = null; switch (selectedIndex) { case 1: t = _ui.m_suitTypeItems.m_In; break; case 2: UI_SuitStoryItem listItem = UI_SuitStoryItem.Proxy(_ui.m_suitType2Items.GetChildAt(_ui.m_suitType2Items.numItems - 1)); t = listItem.m_In; UI_SuitStoryItem.ProxyEnd(); break; } // Wait anim auto play yield return null; // Wait anim finished while (t.playing) { yield return null; } // Show red dots int num; switch (selectedIndex) { case 1: num = _suitTypeItems.Count; for (int i = 0; i < num; i++) { bool red = RedDotDataManager.Instance.GetSuitGuideRed(_menuTypeAllDataDic[selectedIndex][i]); RedDotController.Instance.SetComRedDot(_suitTypeItems[i].target, red, "", -254, 130); } break; case 2: num = _ui.m_suitType2Items.numItems; for (int i = 0; i < num; i++) { bool red = RedDotDataManager.Instance.GetSuitGuideRed(_menuTypeAllDataDic[selectedIndex][i]); RedDotController.Instance.SetComRedDot(_ui.m_suitType2Items.GetChildAt(i).asCom, red, "", -852, 45); } break; } } private void HideSelectedPageRedDot() { int num; int selectedIndex = _ui.m_c1.selectedIndex + 1; switch (selectedIndex) { case 1: num = _suitTypeItems.Count; for (int i = 0; i < num; i++) { RedDotController.Instance.SetComRedDot(_suitTypeItems[i].target.asCom, false); } break; case 2: num = _ui.m_suitType2Items.numItems; for (int i = 0; i < num; i++) { RedDotController.Instance.SetComRedDot(_ui.m_suitType2Items.GetChildAt(i).asCom, false); } break; } } } }