| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 | using System;using System.Collections.Generic;using ET;using FairyGUI;using UI.CommonGame;using UI.ClothingUpgrade;using UnityEngine;using System.Text.RegularExpressions;namespace GFGGame{    public class ClothingSelectView : BaseWindow    {        private UI_ClothingSelectUI _ui;        private int partIndex1;        private int partIndex2;        private EffectUI _effectUI1;        private EffectUI _effectUI2;        public override void Dispose()        {            EffectUIPool.Recycle(_effectUI1);            _effectUI1 = null;            EffectUIPool.Recycle(_effectUI2);            _effectUI2 = null;            if (_ui != null)            {                _ui.Dispose();                _ui = null;            }            base.Dispose();        }        protected override void OnInit()        {            base.OnInit();            packageName = UI_ClothingSelectUI.PACKAGE_NAME;            _ui = UI_ClothingSelectUI.Create();            this.viewCom = _ui.target;            isReturnView = true;            isfullScreen = true;            modal = true;            _ui.m_btnBack.onClick.Add(OnClickBtnBack);            _ui.m_selectList.itemRenderer = RenderListItem;            _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_bgEffect, "ui_gyp", "GYP_ALL");            _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_birdEffect, "ui_gyp", "GYP_Bird");        }        protected override void AddEventListener()        {            base.AddEventListener();            EventAgent.AddEventListener(ConstMessage.COLLEGE_UPGRADE, UpdateList);        }        protected override void OnShown()        {            base.OnShown();            _ui.m_bg.url = ResPathUtil.GetBgImgPath("gyp_bg");            UpdateList();            Timers.inst.AddUpdate(CheckGuide);        }        protected override void RemoveEventListener()        {            base.RemoveEventListener();            EventAgent.RemoveEventListener(ConstMessage.COLLEGE_UPGRADE, UpdateList);        }        protected override void OnHide()        {            base.OnHide();            Timers.inst.Remove(CheckGuide);        }        private void UpdateList()        {            _ui.m_selectList.numItems = CollectPartDataManager.Count;        }        private void RenderListItem(int index, GObject obj)        {            UI_clothingSelectItem listItem = UI_clothingSelectItem.Proxy(obj);            int level;            int levelNum;            int addNum;            if(index < CollectPartDataManager.Count - 1)            {                //0表示所有部位,1~7表示各个部位                partIndex1 = 0;                partIndex2 = index + 1;            }            else            {                partIndex1 = 99;                partIndex2 = 99;            }            level = CollectPartDataManager.Instance.CollectPartDataDic[partIndex2][0];            levelNum = CollectPartDataManager.Instance.CollectPartDataDic[partIndex2][1];            if (IsOpenRank(partIndex2))            {                listItem.target.visible = true;                RedDotController.Instance.SetComRedDot(listItem.target, CollectPartDataManager.Instance.CheckPartCanUP(partIndex2), "");                if (levelNum > 0)                {                    addNum = CollegeBoostCfgArray.Instance.GetCfgBytypePartsAndtypePhaseAndlayer(partIndex2, level, levelNum).value;                    float addNumPercentage = (float)addNum / CollectPartDataManager.Instance.AddtitionRatio;                    listItem.m_c1.selectedIndex = 0;                    listItem.m_partIcon.url = string.Format("ui://ClothingUpgrade/{0}", CollectPartDataManager.Instance.partImage[partIndex2]);                    CollegeRankCfg rankItemList = CollegeRankCfgArray.Instance.GetCfgByRankPartsIdAndSecondLevelRank(partIndex1, level);                    listItem.m_levelText.text = rankItemList.gradeName;                    listItem.m_levelNumText.text = string.Format("{0}级", levelNum.ToString());                    listItem.m_nameText.text = CollectPartDataManager.Instance.partNameDic[partIndex2];                    listItem.m_levelDescText.text = string.Format("{0}%", addNumPercentage);                }                else                {                    listItem.m_c1.selectedIndex = 0;                    listItem.m_partIcon.url = string.Format("ui://ClothingUpgrade/{0}", CollectPartDataManager.Instance.partImage[partIndex2]);                    CollegeRankCfg rankItemList = CollegeRankCfgArray.Instance.GetCfgByRankPartsIdAndSecondLevelRank(partIndex1, level);                    listItem.m_levelText.text = rankItemList.gradeName;                    listItem.m_levelNumText.text = string.Format("{0}级", "0");                    listItem.m_nameText.text = CollectPartDataManager.Instance.partNameDic[partIndex2];                    listItem.m_levelDescText.text = string.Format("{0}%", "0");                }                if (listItem.target.data == null)                {                    listItem.target.onClick.Add(OnBtnItem);                }                listItem.target.data = partIndex2;            }            else            {                listItem.m_c1.selectedIndex = 1;                listItem.target.visible = false;            }            UI_clothingSelectItem.ProxyEnd();        }        private bool IsOpenRank(int partIndex,int levelNum = 9)        {            List<int> openList;            bool isRank = false;            bool isLevel = false;            bool isPassStory = false ;            CollegeRankOpenCfg openitem = CollegeRankOpenCfgArray.Instance.GetCfg(partIndex);            openList = GetOpenList(partIndex);            //判断段位            if (openitem.OpenPreconditionArr == null || openitem.OpenPreconditionArr.Length == 0)            {                isRank = true;            }            else            {                if (CollectPartDataManager.Instance.CollectPartDataDic[openList[0]][0] >= openList[1])                {                    if (CollectPartDataManager.Instance.CollectPartDataDic[openList[0]][1] >= openList[2])                    {                        isRank = true;                    }                }            }            //判断等级            if(RoleDataManager.lvl >= openitem.needRoleLv)            {                isLevel = true;            }            //判断关卡            if(openitem.needStoryLevelId == 0 || InstanceZonesDataManager.CheckLevelPass(openitem.needStoryLevelId))            {                isPassStory = true;            }            else            {                isPassStory = false;            }            return isRank&&isLevel&&isPassStory;        }        private List<int> GetOpenList(int partIndex)        {            List<int> openList = new List<int>();            string pattern = @"\d+";            CollegeRankOpenCfg openitem = CollegeRankOpenCfgArray.Instance.GetCfg(partIndex);            for (int i = 0; i < openitem.OpenPreconditionArr.Length; i++)            {                MatchCollection matches = Regex.Matches(openitem.OpenPreconditionArr[i], pattern);                foreach (Match match in matches)                {                    openList.Add(int.Parse(match.Value));                }            }            return openList;        }        private void OnBtnItem(EventContext context)        {            GObject Item = context.sender as GObject;            int partIndex = (int)Item.data;            if(IsOpenRank(partIndex))            {                ViewManager.Show<ClothingUpgradeView>(new object[] { partIndex });            }            else            {                //string openString = "";                //string partName = CollectPartDataManager.Instance.partNameDic[partIndex];                //List<int> openList = GetOpenList(partIndex);                //openString = CollegeRankCfgArray.Instance.GetCfgByRankPartsIdAndSecondLevelRank(partIndex2, openList[1]).gradeName;                //string descString = string.Format("该部位需要达到{0}{1}{2}开启", partName, openString, openList[2]);                PromptController.Instance.ShowFloatTextPrompt("需要达到特定条件开启");            }        }        private void OnClickBtnBack()        {            ViewManager.GoBackFrom(typeof(ClothingSelectView).FullName);        }        private void CheckGuide(object param)        {            GRoot.inst.touchable = true;            if (GuideDataManager.IsGuideFinish("ClothingSelectView") <= 0)                UpdateCheckGuide(null);            else                Timers.inst.Remove(CheckGuide);        }        protected void UpdateCheckGuide(object param)        {            if (!ViewManager.CheckIsTopView(this.viewCom)) return;            GuideController.TryGuide(null, "ClothingSelectView", 4, "“估衣铺”里可以通过升级各个部位获得加成。", -1, true, _ui.target.height - 600);            GuideController.TryGuide(_ui.m_selectList, "ClothingSelectView", 5, "选择升级部位。",0);        }    }}
 |