using System; using System.Collections.Generic; using cfg; using cfg.ActorCfg; using cfg.LevelCfg; using Framework; using Gameplay; using Gameplay.Level; using PhxhSDK; namespace Gameplay { public class JumpToManager { private static readonly Dictionary _jumpDic = new() { [JumpFuncType.Cultivate_Character] = (Action)JumpToCultivateCharacter, [JumpFuncType.Level_Select] = (Action)JumpToLevelSelect, [JumpFuncType.Level_Detail] = (Action)JumpToLevelDetail, [JumpFuncType.Item_Shop]=(Action)JumpToShopDetail, [JumpFuncType.PVP_Main] = (Action)JumpToPvpMain, }; private static void _DoJumpFunc(JumpFuncType key) { var action = _jumpDic[key]; if (action is Action act) { act(); } } private static void _DoJumpFunc(JumpFuncType key, T param) { var action = _jumpDic[key]; if (action is Action act) { act(param); } } public static void JumpFunc(JumpFuncType key) { _DoJumpFunc(key); } public static void JumpFunc(JumpFuncType key, T param) { _DoJumpFunc(key, param); } public static async void JumpToCultivateCharacter(int uid) { DebugUtil.Log("跳转至培养角色界面,传入角色参数:" + uid + "\n逻辑请在此处实现"); await UISelectCharacterController.Open(); } /// /// 跳转关卡选择 /// /// public static async void JumpToLevelSelect(int levelId) { DebugUtil.Log("Jump to : " + levelId); DataLevel data = TableManager.Instance.Tables.Level.Get(levelId); if (data == null) { await UI_LevelSelectController.Open(); return; } LevelInfo levelInfo = LevelManager.Instance.GetLevelInfoByID(levelId); //new LevelInfo(data); await UI_LevelSelectController.Open(levelInfo); } public static async void JumpToLevelDetail(int levelId) { DebugUtil.Log("Jump to : " + levelId); DataLevel data = TableManager.Instance.Tables.Level.Get(levelId); if (data == null) { DebugUtil.Log("Jump to level detail failed, level id not found: " + levelId); return; } LevelInfo levelInfo = LevelManager.Instance.GetLevelInfoByID(levelId); //new LevelInfo(data); await UI_LevelSelectController.Open(levelInfo); UI_LevelDetailController.Open(levelInfo); } public static async void JumpToShopDetail(int shopID) { DebugUtil.Log("Jump to Shop : " + shopID); var shopCfg = TableManager.Instance.Tables.Shop; if (!shopCfg.DataMap.TryGetValue(shopID, out var shop)) { DebugUtil.Log("Jump to shop detail failed, shop id not found: " + shopID); return; } await UI_ShopController.Open(shopID); } public static async void JumpToPvpMain() { await UI_PVPMainController.Open(); } } }