| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 | 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;        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;            _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();            UpdateItemsByType(1);        }        protected override void AddEventListener()        {            base.AddEventListener();            EventAgent.AddEventListener(ConstMessage.JUMP_TO_SOURCE, this.Hide);        }        protected override void OnShown()        {            base.OnShown();            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.target.onClick.Add(() =>            {                ViewManager.Show<SuitGuideDetailView>(typeId, new object[] { typeof(SuitGuideView).FullName, this.viewData });            });            _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], new object[] { typeof(SuitGuideView).FullName, this.viewData });        }        private void OnClickBtnBack()        {            UpdateItemsByType(1);            _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;            }        }    }}
 |