/// <summary> /// 获取导航数据 /// </summary> /// <param name="nav"></param> /// <param name="args">跳转参数</param> /// <param name="menuOpendData">需要被打开的面板</param> private static void GetNavArgs(MenuNavigation nav, Stack <string> args, out MenuNavigation menuOpenData) { if (nav.ParentMenuId != -1 && (!MenuParentId.IsMenuIgnore(nav.ParentMenuId))) { MenuNavigation parentMenu = ConfigDataBase.MenuNavigationConfig.Get(nav.ParentMenuId); if (AssertHelper.Check(parentMenu != null, "没有找到跳转数据,没有找到跳转数据 Id=" + parentMenu.Id)) { if (parentMenu.ParentMenuId != -1) { if (!string.IsNullOrEmpty(nav.MenuNavParam)) { args.Push(nav.MenuNavParam); } GetNavArgs(parentMenu, args, out menuOpenData); return; } } } menuOpenData = nav; }
/// <summary> /// 获取某个界面是否解锁 /// </summary> public static bool IsUnlockPanel(MenuNavigation nav, bool showTip = false) { bool isParentUnlock = true; if (nav.ParentMenuId != -1 && (!MenuParentId.IsMenuIgnore(nav.ParentMenuId))) // 有父菜单 { isParentUnlock = IsUnlockPanel(nav.ParentMenuId); } bool isUnlocked = false; switch (nav.MenuUnlockType) { case MenuUnlockType.DungeonUnlock: break; case MenuUnlockType.Dungeon: case MenuUnlockType.VIPLevel: case MenuUnlockType.Level: isUnlocked = DataModelManager.Instance.UIMenuNavgation.IsPanelUnlocked(nav.UiRegisterName); break; default: isUnlocked = DataModelManager.Instance.UIMenuNavgation.IsPanelUnlocked(nav.UiRegisterName); break; } if (isParentUnlock && isUnlocked) { return(true); } if (showTip) { ShowUnlockCondition(nav.MenuUnlockType, nav.MenuUnlockPara); } return(false); }