123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- 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<int, List<int>> _menuTypeAllDataDic;
- private List<UI_SuitTypeItem> _suitTypeItems;
- private bool _needRefresh;
- 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();
- _needRefresh = true;
- }
- protected override void AddEventListener()
- {
- base.AddEventListener();
- EventAgent.AddEventListener(ConstMessage.JUMP_TO_SOURCE, this.Hide);
- }
- protected override void OnShown()
- {
- base.OnShown();
- if (_needRefresh)
- {
- _needRefresh = false;
- 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);
- }
- /// <summary>
- /// 初始化上方选择菜单,同步按钮按下和普通状态的文本
- /// </summary>
- /// <param name="index"></param>
- /// <param name="item"></param>
- 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());
- }
- /// <summary>
- /// 更新选择菜单的红点
- /// </summary>
- 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<UI_SuitTypeItem>();
- _menuTypeAllDataDic = new Dictionary<int, List<int>>();
- SuitGuideMenuCfg[] menuCfgs = SuitGuideMenuCfgArray.Instance.dataArray;
- foreach (SuitGuideMenuCfg s in menuCfgs)
- {
- if (!_menuTypeAllDataDic.ContainsKey(s.SuitGuideMenuType))
- {
- _menuTypeAllDataDic.Add(s.SuitGuideMenuType, new List<int>());
- }
- _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]);
- }
- /// <summary>
- /// 初始化种类1
- /// </summary>
- /// <param name="item"></param>
- /// <param name="typeId"></param>
- 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<SuitGuideDetailView>(typeId);
- });
- _suitTypeItems.Add(item);
- }
- /// <summary>
- /// 由于type1页面未使用列表,所以需要循环更新进度
- /// </summary>
- 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();
- }
- }
- /// <summary>
- /// 初始化种类2
- /// </summary>
- /// <param name="index"></param>
- /// <param name="gObject"></param>
- 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<SuitGuideDetailView>(_menuTypeAllDataDic[_ui.m_c1.selectedIndex + 1][index]);
- }
- private void OnClickBtnBack()
- {
- _needRefresh = true;
- _ui.m_c1.SetSelectedIndex(0);
- _ui.m_suitTypeItems.target.scrollPane.ScrollTop();
- Hide();
- }
- 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;
- }
- }
- }
- }
|