/// <summary> /// Removes the top screen from the stack /// </summary> public static void RemoveTopScreen() { var game = (QuaverGame)GameBase.Game; if (game.CurrentScreen != null) { LastScreen = game.CurrentScreen.Type; } ScreenManager.RemoveScreen(); var screen = (QuaverScreen)ScreenManager.Screens.Peek(); game.CurrentScreen = screen; QueuedScreen = screen; // Update client status on the server. var status = screen.GetClientStatus(); if (status != null) { OnlineManager.Client?.UpdateClientStatus(status); } OtherGameMapDatabaseCache.RunThread(); }
/// <summary> /// Changes to a different screen. /// Adds extra functionality such as setting the current screen. /// </summary> /// <param name="screen"></param> public static void ChangeScreen(QuaverScreen screen) { Logger.Important($"Changed to Screen '{screen.Type}'", LogType.Runtime); var game = (QuaverGame)GameBase.Game; if (game.CurrentScreen != null) { LastScreen = game.CurrentScreen.Type; } game.CurrentScreen = screen; ScreenManager.ChangeScreen(screen); QueuedScreen = screen; // Update client status on the server. var status = screen.GetClientStatus(); if (status != null) { OnlineManager.Client?.UpdateClientStatus(status); } OtherGameMapDatabaseCache.RunThread(); }
/// <summary> /// Handles limiting the game's FPS when the window isn't active. /// </summary> private void LimitFpsOnInactiveWindow() { if (CurrentScreen != null && CurrentScreen.Exiting) { return; } if (!IsActive && WindowActiveInPreviousFrame && OtherGameMapDatabaseCache.OnSyncableScreen() || OtherGameMapDatabaseCache.OnSyncableScreen() && !IsActive && !WindowActiveInPreviousFrame) { InactiveSleepTime = TimeSpan.FromSeconds(1d / 30); } // Restore user's settings else if (!WindowActiveInPreviousFrame && (IsActive || !OtherGameMapDatabaseCache.OnSyncableScreen())) { InactiveSleepTime = TimeSpan.Zero; InitializeFpsLimiting(); } WindowActiveInPreviousFrame = IsActive; }
/// <summary> /// Handles limiting the game's FPS when the window isn't active. /// </summary> private void LimitFpsOnInactiveWindow() { if (CurrentScreen != null && CurrentScreen.Exiting) { return; } if (!IsActive && WindowActiveInPreviousFrame && OtherGameMapDatabaseCache.OnSyncableScreen() || OtherGameMapDatabaseCache.OnSyncableScreen() && !IsActive && !WindowActiveInPreviousFrame) { Graphics.SynchronizeWithVerticalRetrace = false; TargetElapsedTime = TimeSpan.FromSeconds(1d / 30); IsFixedTimeStep = true; } // Restore user's settings else if (!WindowActiveInPreviousFrame && (IsActive || !OtherGameMapDatabaseCache.OnSyncableScreen())) { InitializeFpsLimiting(); } WindowActiveInPreviousFrame = IsActive; }