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; 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 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 GetOpenList(int partIndex) { List openList = new List(); 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(new object[] { partIndex }); } else { //string openString = ""; //string partName = CollectPartDataManager.Instance.partNameDic[partIndex]; //List 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); } } }