public static void OnJoin(MyGuiScreenProgress progress, Result joinResult, LobbyEnterInfo enterInfo, MyMultiplayerBase multiplayer) { // HACK: To hide multiplayer from ME //if (!MySandboxGame.Services.SteamService.IsActive || MySandboxGame.Services.SteamService.AppId * 2 == 667900) // return; MyLog.Default.WriteLine(String.Format("Lobby join response: {0}, enter state: {1}", joinResult.ToString(), enterInfo.EnterState)); if (joinResult == Result.OK && enterInfo.EnterState == LobbyEnterResponseEnum.Success && multiplayer.GetOwner() != MySteam.UserId) { DownloadWorld(progress, multiplayer); } else { string status = "ServerHasLeft"; if (joinResult != Result.OK) { status = joinResult.ToString(); } else if (enterInfo.EnterState != LobbyEnterResponseEnum.Success) { status = enterInfo.EnterState.ToString(); } OnJoinFailed(progress, multiplayer, status); } }
public void RaiseJoined(Result result, LobbyEnterInfo info, MyMultiplayerBase multiplayer) { Debug.Assert(!Cancelled, "Cancelled action should not raise events"); var handler = JoinDone; if (handler != null) { handler(result, info, multiplayer); } }
public static void OnJoinBattle(MyGuiScreenProgress progress, Result joinResult, LobbyEnterInfo enterInfo, MyMultiplayerBase multiplayer) { MyLog.Default.WriteLine(String.Format("Battle lobby join response: {0}, enter state: {1}", joinResult.ToString(), enterInfo.EnterState)); if (joinResult == Result.OK && enterInfo.EnterState == LobbyEnterResponseEnum.Success && multiplayer.GetOwner() != MySteam.UserId) { // Create session with empty world Debug.Assert(MySession.Static == null); MySession.CreateWithEmptyWorld(multiplayer); MySession.Static.Settings.Battle = true; progress.CloseScreen(); MyLog.Default.WriteLine("Battle lobby joined"); if (MyPerGameSettings.GUI.BattleLobbyClientScreen != null) { MyGuiSandbox.AddScreen(MyGuiSandbox.CreateScreen(MyPerGameSettings.GUI.BattleLobbyClientScreen)); } else { Debug.Fail("No battle lobby client screen"); } } else { string status = "ServerHasLeft"; if (joinResult != Result.OK) { status = joinResult.ToString(); } else if (enterInfo.EnterState != LobbyEnterResponseEnum.Success) { status = enterInfo.EnterState.ToString(); } OnJoinBattleFailed(progress, multiplayer, status); } }
public static void OnJoinScenario(MyGuiScreenProgress progress, Result joinResult, LobbyEnterInfo enterInfo, MyMultiplayerBase multiplayer) { MyLog.Default.WriteLine(String.Format("Lobby join response: {0}, enter state: {1}", joinResult.ToString(), enterInfo.EnterState)); if (joinResult == Result.OK && enterInfo.EnterState == LobbyEnterResponseEnum.Success && multiplayer.GetOwner() != Sync.MyId) { // Create session with empty world if (MySession.Static != null) { MySession.Static.Unload(); MySession.Static = null; } MySession.CreateWithEmptyWorld(multiplayer); progress.CloseScreen(); MyScreenManager.CloseAllScreensNowExcept(null); MyLog.Default.WriteLine("Scenario lobby joined"); if (MyPerGameSettings.GUI.ScenarioLobbyClientScreen != null) { MyGuiSandbox.AddScreen(MyGuiSandbox.CreateScreen(MyPerGameSettings.GUI.ScenarioLobbyClientScreen)); } else { Debug.Fail("No scenario lobby client screen"); } } else { string status = "ServerHasLeft"; if (joinResult != Result.OK) { status = joinResult.ToString(); } else if (enterInfo.EnterState != LobbyEnterResponseEnum.Success) { status = enterInfo.EnterState.ToString(); } OnJoinBattleFailed(progress, multiplayer, status); } }
public static void OnJoinBattle(MyGuiScreenProgress progress, Result joinResult, LobbyEnterInfo enterInfo, MyMultiplayerBase multiplayer) { MyLog.Default.WriteLine(String.Format("Battle lobby join response: {0}, enter state: {1}", joinResult.ToString(), enterInfo.EnterState)); bool battleCanBeJoined = multiplayer != null && multiplayer.BattleCanBeJoined; if (joinResult == Result.OK && enterInfo.EnterState == LobbyEnterResponseEnum.Success && battleCanBeJoined && multiplayer.GetOwner() != Sync.MyId) { // Create session with empty world Debug.Assert(MySession.Static == null); MySession.CreateWithEmptyWorld(multiplayer); MySession.Static.Settings.Battle = true; progress.CloseScreen(); MyLog.Default.WriteLine("Battle lobby joined"); if (MyPerGameSettings.GUI.BattleLobbyClientScreen != null) { MyGuiSandbox.AddScreen(MyGuiSandbox.CreateScreen(MyPerGameSettings.GUI.BattleLobbyClientScreen)); } else { Debug.Fail("No battle lobby client screen"); } } else { bool statusFullMessage = true; string status = MyTexts.GetString(MyCommonTexts.MultiplayerErrorServerHasLeft); if (joinResult != Result.OK) { status = joinResult.ToString(); statusFullMessage = false; } else if (enterInfo.EnterState != LobbyEnterResponseEnum.Success) { status = enterInfo.EnterState.ToString(); statusFullMessage = false; } else if (!battleCanBeJoined) { if (MyFakes.ENABLE_JOIN_STARTED_BATTLE) { status = status = MyTexts.GetString(MyCommonTexts.MultiplayerErrorSessionEnded); statusFullMessage = true; } else { status = "GameStarted"; statusFullMessage = false; } } MyLog.Default.WriteLine("Battle join failed: " + status); OnJoinBattleFailed(progress, multiplayer, status, statusFullMessage: statusFullMessage); } }