/// <summary> /// 加载地图 /// </summary> /// <param name="levelKey"></param> /// <param name="fromPosTag">是否从存档中取出生点</param> public static void LoadGameMap(string levelKey, LevelMaster.LevelLoadPara para = null) { if (para == null) { para = new LevelMaster.LevelLoadPara(); //默认生成一份 } var mapKey = levelKey.Contains("&") ? levelKey.Split('&')[0] : levelKey; var command = levelKey.Contains("&") ? levelKey.Split('&')[1] : ""; LoadGameMap(ConfigTable.Get <GameMap>(mapKey), para, command); }
public void OnYesBtnClick() { var loadPara = new LevelMaster.LevelLoadPara(); loadPara.loadType = LevelMaster.LevelLoadPara.LevelLoadType.StartAtTrigger; loadPara.triggerName = "Level/Triggers/0"; //加载地图 var startMap = GameMap.GetGameStartMap(); LevelLoader.LoadGameMap(startMap, loadPara, "", () => { //首次进入游戏音乐 AudioManager.PlayMusic(16); Jyx2_UIManager.Instance.HideUI("GameMainMenu"); }); }
public static void DoLoadGame(int index) { //加载存档 var r = GameRuntimeData.LoadArchive(index); //初始化角色 foreach (var role in r.Team) { role.BindKey(); } var loadPara = new LevelMaster.LevelLoadPara() { loadType = LevelMaster.LevelLoadPara.LevelLoadType.Load }; //加载地图 LevelLoader.LoadGameMap(r.CurrentMap, loadPara); }
//加载地图 public static void LoadGameMap(GameMap map, LevelMaster.LevelLoadPara para = null, string command = "", Action callback = null) { if (para == null) { para = new LevelMaster.LevelLoadPara(); //默认生成一份 } LevelMaster.loadPara = para; //存储结构 if (GameRuntimeData.Instance != null) { //存储上一个地图 GameRuntimeData.Instance.PrevMap = GameRuntimeData.Instance.CurrentMap; //切换当前地图 if (map != null) { GameRuntimeData.Instance.CurrentMap = map.Key; //GameRuntimeData.Instance.CurrentPos = ""; //非战斗场景清理数据 if (!map.Tags.Contains("BATTLE")) { //MapRuntimeData.Instance.Clear(); //清理重复角色 //GameRuntimeData.Instance.CurrentTeam.RemoveAll(role => !GameRuntimeData.Instance.Team.Contains(role)); //从GameRuntimeData复制队伍信息到地图数据 //if (map.Tags.Contains("PLAYER_ONLY")) //{ // MapRuntimeData.Instance.AddToExploreTeam(GameRuntimeData.Instance.CurrentTeam[0]); //} //else //{ // foreach (var role in GameRuntimeData.Instance.CurrentTeam) // { // MapRuntimeData.Instance.AddToExploreTeam(role); // } //} //初始化队伍状态 //foreach (var r in MapRuntimeData.Instance.ExploreTeam) //{ // r.Hp = r.Maxhp; //} } //存档 //GameRuntimeData.Instance.GameSave(); } } if (string.IsNullOrEmpty(command)) { LoadingPanel.Create(map.Key, callback); } else { LoadingPanel.Create($"{map.Key}&{command}", callback); } }
//执行指令 public void ExecuteCommand(string command, List <GameObject> paraGameObjects) { if (string.IsNullOrEmpty(command)) { return; } m_ParaGameObjects = paraGameObjects; string cmd = command.Split('#')[0].ToLower(); string value = command.Substring(cmd.Length + 1); //command.Split('#')[1]; if (cmd == "dialog") { //dialogPanel.Show("", value, null); Jyx2_UIManager.Instance.ShowUI("ChatUIPanel", ChatType.RoleKey, "", value); } else if (cmd == "selfsay") { GameRuntimeData.Instance.Player.View.Say(value); } else if (cmd == "loadlevel") { SceneManager.LoadScene(value); } else if (cmd == "loadmap") { var loadPara = new LevelMaster.LevelLoadPara() { loadType = LevelMaster.LevelLoadPara.LevelLoadType.Load }; LevelLoader.LoadGameMap(value, loadPara); } else if (cmd == "mapevt") { MapEvt mapEvt = ConfigTable.Get <MapEvt>(value); if (mapEvt != null) { //如果已经执行过,返回 if (mapEvt.IsFinished(runtime)) { return; } //标记为正在执行 mapEvt.MarkAsExecuting(runtime); m_CurrentMapEvt = mapEvt; PlayStory(mapEvt.ExecuteCode.Split('\n'), mapEvt.Result); } else { Debug.LogError("载入了错误的mapevt:" + value); } } else if (cmd == "timeline") { PlayTimeline(value, null); } else if (cmd == "runtimestory") { PlayStory(new string[] { value }, ""); } else if (cmd == "transport") { var levelMaster = FindObjectOfType <LevelMaster>(); levelMaster.Transport(value); } else if (cmd == "win") { BattleHelper battleHelper = FindObjectOfType <BattleHelper>(); var model = battleHelper.GetModel(); foreach (var role in model.Roles) { if (role.team != 0) { role.Hp = 0; } role.CheckDeath(); } HSUtilsEx.CallWithDelay(this, () => { battleHelper.SwitchStatesTo(BattleHelper.BattleViewStates.WaitingForNextActiveBattleRole); }, 1f); } else if (cmd == "lose") { BattleHelper battleHelper = FindObjectOfType <BattleHelper>(); var model = battleHelper.GetModel(); foreach (var role in model.Roles) { if (role.team == 0) { role.Hp = 0; } role.CheckDeath(); } HSUtilsEx.CallWithDelay(this, () => { battleHelper.SwitchStatesTo(BattleHelper.BattleViewStates.WaitingForNextActiveBattleRole); }, 1f); } else if (cmd == "testlua") { LuaExecutor.Execute(value); } else if (cmd == "jyx2event") { LuaExecutor.Execute("jygame/ka" + value); } else if (cmd == "battle") { LevelLoader.LoadBattle(int.Parse(value), null); } }