using ET; using FairyGUI; using System.Collections.Generic; using UnityEngine; namespace GFGGame { public class FunctionOpenDataManager : SingletonBase { /// /// 根据功能名检测功能是否开启 /// /// /// public bool CheckIsFunOpenById(string functionId, bool showTips = true) { string name = ViewManager.GetName(functionId); FunctionOpenCfg cfg = FunctionOpenCfgArray.Instance.GetCfg(name); if (cfg == null) { // Debug.LogWarning("g功能.xlsx 功能开启_FunctionOpenCfg 未添加 " + viewName + " 的配置"); return true;//未配置功能开启的暂时默认开启 } if (cfg.parentId != null && cfg.parentId != "") { //先检查父功能是否开启 if (!CheckIsFunOpenById(cfg.parentId, showTips)) { return false; } } if (!CheckIsChapterFunOpen(cfg, showTips)) return false; if (!CheckIsLvFunOpen(cfg, showTips)) return false; if (!CheckIsSpecialFunOpen(cfg, showTips)) return false; return true; } /// /// 根据章节Id检测是否有新功能开启 /// public void CheckHasChapterFunOpen(int storyLevelCfgId) { FunctionOpenCfg[] cfgs = FunctionOpenCfgArray.Instance.dataArray; List listCfg = new List(); for (int i = 0; i < cfgs.Length; i++) { if (cfgs[i].show == 0) continue; if (cfgs[i].special > 0) continue; if (cfgs[i].lv > 0) continue; if (cfgs[i].storyLevelId != storyLevelCfgId || !CheckIsChapterFunOpen(cfgs[i], false)) continue; // if (CheckIsLvFunOpen(cfgs[i], false)) continue; listCfg.Add(cfgs[i].id); } if (listCfg.Count > 0) { // Timers.inst.Add(1, 0, FunctionOpen, listCfg); ViewManager.Show(listCfg); } } /// /// 根据角色Lv检测是否有新功能开启 /// public void CheckHasLvFunOpen(int lv, int oldLv) { FunctionOpenCfg[] cfgs = FunctionOpenCfgArray.Instance.dataArray; List listCfg = new List(); for (int i = 0; i < cfgs.Length; i++) { if ((cfgs[i].special > 0)) continue; if (cfgs[i].show == 0) continue; if (lv <= 0) continue; if (cfgs[i].storyLevelId > 0) continue; if (cfgs[i].lv > oldLv && lv < cfgs[i].lv || !CheckIsLvFunOpen(cfgs[i], false)) continue; // if (CheckIsChapterFunOpen(cfgs[i], false)) continue; listCfg.Add(cfgs[i].id); } if (listCfg.Count > 0) { ViewManager.Show(listCfg); } } public void CheckHasSpecialFunOpen() { FunctionOpenCfg[] cfgs = FunctionOpenCfgArray.Instance.dataArray; List listCfg = new List(); for (int i = 0; i < cfgs.Length; i++) { if (cfgs[i].show == 0) continue; if (cfgs[i].storyLevelId > 0) continue; if (cfgs[i].lv > 0) continue; if ((cfgs[i].special <= 0)) continue; if (StorageDataManager.Instance.GetStorageValue(ConstStorageId.FUNCTION_OPEN + cfgs[i].index) == 1) continue; if (CheckIsSpecialFunOpen(cfgs[i], false)) { listCfg.Add(cfgs[i].id); } } if (listCfg.Count > 0) { ViewManager.Show(listCfg); } } // private void FunctionOpen(object param) // { // if (ViewManager.isViewOpen(typeof(RoleLvUpView).Name)) return; // ViewManager.Show(param); // Timers.inst.Remove(FunctionOpen); // } //检测配置章节是否开启 private bool CheckIsChapterFunOpen(FunctionOpenCfg cfg, bool showTips = true) { if (cfg.storyLevelId <= 0) { return true; } if (InstanceZonesDataManager.CheckLevelPass(cfg.storyLevelId)) { return true; } StoryLevelCfg storyLevelCfg = StoryLevelCfgArray.Instance.GetCfg(cfg.storyLevelId); StoryChapterCfg storyChapterCfg = StoryChapterCfgArray.Instance.GetCfg(storyLevelCfg.chapterId); if (showTips) PromptController.Instance.ShowFloatTextPrompt(string.Format("通关主线{0}-{1}解锁", storyChapterCfg.order, storyLevelCfg.order)); return false; } //检测配置角色是否开启 private bool CheckIsLvFunOpen(FunctionOpenCfg cfg, bool showTips = true) { //GameGlobal.myNumericComponent.GetAsInt(NumericType.Lvl) if (RoleDataManager.lvl >= cfg.lv) { return true; } if (showTips) PromptController.Instance.ShowFloatTextPrompt(string.Format("角色达到{0}级解锁", cfg.lv)); return false; } private bool CheckIsSpecialFunOpen(FunctionOpenCfg cfg, bool showTips = true) { if (cfg.special <= 0) return true; if (cfg.id == typeof(SuitListView).Name)//服装升级获取第一套【天衣】套装后开启 { if (StorageDataManager.Instance.GetStorageValue(ConstStorageId.FUNCTION_OPEN + cfg.index) == 1) return true; List _currentList3 = DressUpMenuSuitDataManager.GetSuitIDList(); if (_currentList3.Count == 0) return false; _currentList3 = SuitUtil.SortSuitListByHighRarity(_currentList3); if (SuitCfgArray.Instance.GetCfg(_currentList3[0]).rarity == ConstDressRarity.Rarity_TIANYI) { StorageSProxy.ReqSetClientValue(ConstStorageId.FUNCTION_OPEN + cfg.index, 1).Coroutine(); return true; } if (showTips) PromptController.Instance.ShowFloatTextPrompt(string.Format("收集一套“天衣”套装后开启")); } return false; } } }