using System.Collections.Generic; using System.Linq; using UnityEngine; using System; /// /// 关联界面索引表,用于获取途径,富文本打开界面等情况 /// public class UIJumpManager : GameSystemManager { public override void Init() { } public bool CanOpenWin(int winID, bool showTip = false) { var config = WindowSearchConfig.Get(winID); if (config == null) { return false; } if (config.FuncID != 0 && !FuncOpen.Instance.IsFuncOpen(config.FuncID, showTip)) { return false; } if (config.ActiveType != 0 && !OperationTimeHepler.Instance.SatisfyOpenCondition((OperationType)config.ActiveType)) { if (showTip) { SysNotifyMgr.Instance.ShowTip("ActivityNoOpen"); } return false; } //活动后续补充 return true; } public void OpenWindow(int winID, bool showTip = true) { if (!CanOpenWin(winID, showTip)) { return; } var config = WindowSearchConfig.Get(winID); if (config.WinName == "StoreBaseWin") { if (int.TryParse(config.Extra, out int result)) { //指定商品 StoreModel.Instance.jumpShopID = result; if (StoreModel.Instance.jumpShopID == 0) { StoreModel.Instance.selectStoreFuncType = StoreFunc.Normal; } else { StoreModel.Instance.selectStoreFuncType = (StoreFunc)StoreConfig.Get(StoreModel.Instance.jumpShopID).ShopType; } } } else if (config.WinName == "HeroDebutCallWin" || config.WinName == "HeroDebutSkinWin" || config.WinName == "HeroDebutCheckInWin" || config.WinName == "HeroDebutGiftWin" || config.WinName == "HeroDebutShopWin") { var heroDebutAct = HeroDebutManager.Instance.GetOperationHeroAppearInfo(); if (heroDebutAct == null) { SysNotifyMgr.Instance.ShowTip("ActivityNoOpen"); return; } var actHeroAppearConfig = ActHeroAppearConfig.Get(heroDebutAct.CfgID); if (actHeroAppearConfig == null) { SysNotifyMgr.Instance.ShowTip("ActivityNoOpen"); return; } // 皮肤商店需要判断物品ID if (config.WinName == "HeroDebutSkinWin") { if (!HeroDebutManager.Instance.HasItemInSkinCTGIDList(heroDebutAct.CfgID, int.Parse(config.Extra))) { SysNotifyMgr.Instance.ShowTip("ActivityNoOpen"); return; } } if (UIManager.Instance.IsOpened(config.WinName)) { UIManager.Instance.CloseWindow(config.WinName); UIManager.Instance.OpenWindow(config.WinName); } } if (!UIManager.Instance.IsOpened(config.WinName)) { UIManager.Instance.OpenWindow(config.WinName, config.TabIndex); } else { var ui = UIManager.Instance.GetUI(config.WinName) as OneLevelWin; ui?.ClickFuncBtn(config.TabIndex); } } }