示例#1
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            contentContainer.ScaleTo(0.95f, duration, Easing.OutQuint);
            this.FadeOut(duration, Easing.OutQuint);

            return(base.OnExiting(e));
        }
示例#2
0
 public override bool OnExiting(ScreenExitEvent e)
 {
     host.AllowBenchmarkUnlimitedFrames = false;
     config.SetValue(FrameworkSetting.FrameSync, previousFrameSyncMode);
     host.UpdateThread.ActiveHz = previousActiveHz;
     return(base.OnExiting(e));
 }
示例#3
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            screenSuspension?.RemoveAndDisposeImmediately();
            failAnimationLayer?.RemoveFilters();

            if (LoadedBeatmapSuccessfully)
            {
                if (!GameplayState.HasPassed && !GameplayState.HasFailed)
                {
                    GameplayState.HasQuit = true;
                }

                // if arriving here and the results screen preparation task hasn't run, it's safe to say the user has not completed the beatmap.
                if (prepareScoreForDisplayTask == null)
                {
                    Score.ScoreInfo.Passed = false;
                    // potentially should be ScoreRank.F instead? this is the best alternative for now.
                    Score.ScoreInfo.Rank = ScoreRank.D;
                }

                // EndPlaying() is typically called from ReplayRecorder.Dispose(). Disposal is currently asynchronous.
                // To resolve test failures, forcefully end playing synchronously when this screen exits.
                // Todo: Replace this with a more permanent solution once osu-framework has a synchronous cleanup method.
                spectatorClient.EndPlaying(GameplayState);
            }

            // GameplayClockContainer performs seeks / start / stop operations on the beatmap's track.
            // as we are no longer the current screen, we cannot guarantee the track is still usable.
            (GameplayClockContainer as MasterGameplayClockContainer)?.StopUsingBeatmapClock();

            musicController.ResetTrackAdjustments();

            fadeOut();
            return(base.OnExiting(e));
        }
示例#4
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            message.TextContainer.MoveTo(new Vector2(DrawSize.X / 16, 0), transition_time, Easing.OutExpo);
            this.FadeOut(transition_time, Easing.OutExpo);

            return(base.OnExiting(e));
        }
示例#5
0
文件: Editor.cs 项目: omkelderman/osu
        public override bool OnExiting(ScreenExitEvent e)
        {
            if (!ExitConfirmed)
            {
                // dialog overlay may not be available in visual tests.
                if (dialogOverlay == null)
                {
                    confirmExit();
                    return(true);
                }

                // if the dialog is already displayed, block exiting until the user explicitly makes a decision.
                if (dialogOverlay.CurrentDialog is PromptForSaveDialog)
                {
                    return(true);
                }

                if (isNewBeatmap || HasUnsavedChanges)
                {
                    samplePlaybackDisabled.Value = true;
                    dialogOverlay?.Push(new PromptForSaveDialog(confirmExit, confirmExitWithSave, cancelExit));
                    return(true);
                }
            }

            ApplyToBackground(b => b.FadeColour(Color4.White, 500));
            resetTrack();

            refetchBeatmap();

            return(base.OnExiting(e));
        }
        public override bool OnExiting(ScreenExitEvent e)
        {
            // the room may not be left immediately after a disconnection due to async flow,
            // so checking the IsConnected status is also required.
            if (client.Room == null || !client.IsConnected.Value)
            {
                // room has not been created yet; exit immediately.
                return(base.OnExiting(e));
            }

            if (!exitConfirmed && dialogOverlay != null)
            {
                if (dialogOverlay.CurrentDialog is ConfirmDialog confirmDialog)
                {
                    confirmDialog.PerformOkAction();
                }
                else
                {
                    dialogOverlay.Push(new ConfirmDialog("Are you sure you want to leave this multiplayer match?", () =>
                    {
                        exitConfirmed = true;
                        this.Exit();
                    }));
                }

                return(true);
            }

            return(base.OnExiting(e));
        }
示例#7
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            this
            .FadeOut(100)
            .MoveToX(offset, 500, Easing.OutQuint);

            return(base.OnExiting(e));
        }
示例#8
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            musicController.Stop();

            editorState.Time = GameplayClockContainer.CurrentTime;
            editor.RestoreState(editorState);
            return(base.OnExiting(e));
        }
示例#9
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            RoomManager?.PartRoom();
            Mods.Value = Array.Empty <Mod>();

            onLeaving();

            return(base.OnExiting(e));
        }
            public override bool OnExiting(ScreenExitEvent e)
            {
                if (SubScreenStack.CurrentScreen != null)
                {
                    SubScreenStack.CurrentScreen.Exit();
                    return(true);
                }

                return(base.OnExiting(e));
            }
        public override bool OnExiting(ScreenExitEvent e)
        {
            if (screenStack.CurrentScreen == null)
            {
                return(base.OnExiting(e));
            }

            screenStack.Exit();
            return(true);
        }
示例#12
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            // block until migration is finished
            if (migrationTask?.IsCompleted == false)
            {
                return(true);
            }

            return(base.OnExiting(e));
        }
示例#13
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            if (base.OnExiting(e))
            {
                return(true);
            }

            this.FadeOut(100);
            return(false);
        }
示例#14
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            if (IsLoaded)
            {
                this.FadeOut(TRANSITION_LENGTH, Easing.OutExpo);
                this.MoveToX(x_movement_amount, TRANSITION_LENGTH, Easing.OutExpo);
            }

            return(base.OnExiting(e));
        }
示例#15
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            if (base.OnExiting(e))
            {
                return(true);
            }

            Exited?.Invoke();

            return(false);
        }
示例#16
0
            public override bool OnExiting(ScreenExitEvent e)
            {
                // For testing purposes allow the screen to exit without saving on second attempt.
                if (!ExitConfirmed && dialogOverlay?.CurrentDialog is PromptForSaveDialog saveDialog)
                {
                    saveDialog.PerformAction <PopupDialogDangerousButton>();
                    return(true);
                }

                return(base.OnExiting(e));
            }
示例#17
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            bool exiting = base.OnExiting(e);

            if (LoadedBeatmapSuccessfully)
            {
                submitScore(Score.DeepClone());
            }

            return(exiting);
        }
            public override bool OnExiting(ScreenExitEvent e)
            {
                ExitAttempts++;

                if (dialogDisplayCount++ < 1)
                {
                    dialogOverlay.Push(new ConfirmExitDialog(this.Exit, () => { }));
                    return(true);
                }

                return(base.OnExiting(e));
            }
示例#19
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            if (!itemSelected)
            {
                Beatmap.Value = initialBeatmap;
                Ruleset.Value = initialRuleset;
                Mods.Value    = initialMods;
            }

            freeModSelectOverlay.Hide();

            return(base.OnExiting(e));
        }
示例#20
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            cancelLoad();
            ContentOut();

            // If the load sequence was interrupted, the epilepsy warning may already be displayed (or in the process of being displayed).
            epilepsyWarning?.Hide();

            // Ensure the screen doesn't expire until all the outwards fade operations have completed.
            this.Delay(CONTENT_OUT_DURATION).FadeOut();

            ApplyToBackground(b => b.IgnoreUserSettings.Value = true);

            BackgroundBrightnessReduction = false;
            Beatmap.Value.Track.RemoveAdjustment(AdjustableProperty.Volume, volumeAdjustment);

            return(base.OnExiting(e));
        }
示例#21
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            var subScreen = screenStack.CurrentScreen as Drawable;

            if (subScreen?.IsLoaded == true && screenStack.CurrentScreen.OnExiting(e))
            {
                return(true);
            }

            RoomManager.PartRoom();

            waves.Hide();

            this.Delay(WaveContainer.DISAPPEAR_DURATION).FadeOut();

            base.OnExiting(e);
            return(false);
        }
示例#22
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            if (ValidForResume && logo != null)
            {
                onExitingLogo();
            }

            if (base.OnExiting(e))
            {
                return(true);
            }

            if (ownedBackground != null && backgroundStack?.CurrentScreen == ownedBackground)
            {
                backgroundStack?.Exit();
            }

            return(false);
        }
示例#23
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            if (!exitConfirmed && dialogOverlay != null)
            {
                if (dialogOverlay.CurrentDialog is ConfirmExitDialog exitDialog)
                {
                    exitDialog.PerformOkAction();
                }
                else
                {
                    dialogOverlay.Push(new ConfirmExitDialog(confirmAndExit, () => exitConfirmOverlay.Abort()));
                }

                return(true);
            }

            Buttons.State = ButtonSystemState.Exit;
            OverlayActivationMode.Value = OverlayActivation.Disabled;

            songTicker.Hide();

            this.FadeOut(3000);
            return(base.OnExiting(e));
        }
示例#24
0
 public override bool OnExiting(ScreenExitEvent e)
 {
     // This screen never exits.
     return(true);
 }
示例#25
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            SpectatorClient.OnUserBeganPlaying -= userBeganPlaying;

            return(base.OnExiting(e));
        }
示例#26
0
        public override bool OnExiting(ScreenExitEvent e)
        {
            SpectatorClient.OnNewFrames -= userSentFrames;

            return(base.OnExiting(e));
        }
示例#27
0
 public override bool OnExiting(ScreenExitEvent e)
 {
     previewTrackManager.StopAnyPlaying(this);
     return(base.OnExiting(e));
 }
示例#28
0
 public override bool OnExiting(ScreenExitEvent e)
 {
     base.OnExiting(e);
     this.FadeOut(DISAPPEAR_DURATION, Easing.OutQuint);
     return(false);
 }
示例#29
0
 public override bool OnExiting(ScreenExitEvent e)
 {
     taskCompletionSource.TrySetCanceled();
     return(base.OnExiting(e));
 }
示例#30
0
 public override bool OnExiting(ScreenExitEvent e)
 {
     onLeaving();
     return(base.OnExiting(e));
 }