private void JoinServer(MyObjectBuilder_LastSession mySession) { try { MyGuiScreenProgress prog = new MyGuiScreenProgress(MyTexts.Get(MyCommonTexts.DialogTextCheckServerStatus)); MyGuiSandbox.AddScreen(prog); MyGameService.OnPingServerResponded += OnPingSuccess; MyGameService.OnPingServerFailedToRespond += OnPingFailure; MyGameService.PingServer(mySession.GetConnectionString()); void OnPingFailure(object sender, object data) { MyGuiSandbox.RemoveScreen(prog); MySandboxGame.Static.ServerFailedToRespond(sender, data); MyGameService.OnPingServerResponded -= OnPingSuccess; MyGameService.OnPingServerFailedToRespond -= OnPingFailure; } void OnPingSuccess(object sender, MyGameServerItem item) { MyGuiSandbox.RemoveScreen(prog); MySandboxGame.Static.ServerResponded(sender, item); MyGameService.OnPingServerResponded -= OnPingSuccess; MyGameService.OnPingServerFailedToRespond -= OnPingFailure; } } catch (Exception ex) { MyLog.Default.WriteLine(ex); MyGuiSandbox.Show(MyTexts.Get(MyCommonTexts.MultiplayerJoinIPError), MyCommonTexts.MessageBoxCaptionError); } }
public void RemoveScreen(MyGuiScreenBase screen) { Scheduler.AddScheduledCallback(dt => { screen.CloseScreenNow(); MyGuiSandbox.RemoveScreen(screen); }, 0); _screens.Remove(screen); }
public override bool Update(bool hasFocus) { if (CloseWindow && m_wasDrawn) { MyGuiSandbox.RemoveScreen(m_currentServerSaveScreen); MyGuiSandbox.RemoveScreen(this); } return(true); }
private void StartScenario() { if (Sync.IsServer) { ServerStartGameTime = DateTime.UtcNow; } if (m_waitingScreen != null) { MyGuiSandbox.RemoveScreen(m_waitingScreen); m_waitingScreen = null; } GameState = MyState.Running; m_startBattleTime = MySession.Static.ElapsedPlayTime; MyPlayerCollection.RequestLocalRespawn(); }
protected override void OnUnload() { base.OnUnload(); if (_screen != null) { RemoveScreen(_screen); _screen = null; } if (_ctx != null && _ctx.InStack) _ctx.Pop(); foreach (var screen in _screens) { screen.CloseScreenNow(); MyGuiSandbox.RemoveScreen(screen); } _screens.Clear(); }