Beispiel #1
0
        private void updateLogoState(ButtonSystemState lastState = ButtonSystemState.Initial)
        {
            if (logo == null)
            {
                return;
            }

            switch (state)
            {
            case ButtonSystemState.Exit:
            case ButtonSystemState.Initial:
                logoDelayedAction?.Cancel();
                logoDelayedAction = Scheduler.AddDelayed(() =>
                {
                    logoTracking = false;

                    game?.Toolbar.Hide();

                    logo.ClearTransforms(targetMember: nameof(Position));
                    logo.RelativePositionAxes = Axes.Both;

                    logo.MoveTo(new Vector2(0.5f), 800, Easing.OutExpo);
                    logo.ScaleTo(1, 800, Easing.OutExpo);
                }, buttonArea.Alpha * 150);
                break;

            case ButtonSystemState.TopLevel:
            case ButtonSystemState.Play:
                switch (lastState)
                {
                case ButtonSystemState.TopLevel:         // coming from toplevel to play
                    break;

                case ButtonSystemState.Initial:
                    logo.ClearTransforms(targetMember: nameof(Position));
                    logo.RelativePositionAxes = Axes.None;

                    bool impact = logo.Scale.X > 0.6f;

                    if (lastState == ButtonSystemState.Initial)
                    {
                        logo.ScaleTo(0.5f, 200, Easing.In);
                    }

                    logo.MoveTo(logoTrackingPosition, lastState == ButtonSystemState.EnteringMode ? 0 : 200, Easing.In);

                    logoDelayedAction?.Cancel();
                    logoDelayedAction = Scheduler.AddDelayed(() =>
                    {
                        logoTracking = true;

                        if (impact)
                        {
                            logo.Impact();
                        }

                        game?.Toolbar.Show();
                    }, 200);
                    break;

                default:
                    logo.ClearTransforms(targetMember: nameof(Position));
                    logo.RelativePositionAxes = Axes.None;
                    logoTracking = true;
                    logo.ScaleTo(0.5f, 200, Easing.OutQuint);
                    break;
                }

                break;

            case ButtonSystemState.EnteringMode:
                logoTracking = true;
                break;
            }
        }
Beispiel #2
0
        private void updateLogoState(MenuState lastState = MenuState.Initial)
        {
            if (logo == null)
            {
                return;
            }

            logoDelayedAction?.Cancel();

            switch (state)
            {
            case MenuState.Exit:
            case MenuState.Initial:
                logoTracking = false;

                logoDelayedAction = Scheduler.AddDelayed(() =>
                {
                    showOverlays.Value = false;

                    logo.ClearTransforms(targetMember: nameof(Position));
                    logo.RelativePositionAxes = Axes.Both;

                    logo.MoveTo(new Vector2(0.5f), 800, Easing.OutExpo);
                    logo.ScaleTo(1, 800, Easing.OutExpo);
                }, 150);

                break;

            case MenuState.TopLevel:
            case MenuState.Play:
                logo.ClearTransforms(targetMember: nameof(Position));
                logo.RelativePositionAxes = Axes.None;

                switch (lastState)
                {
                case MenuState.TopLevel:         // coming from toplevel to play
                case MenuState.Initial:
                    logoTracking = false;
                    logo.ScaleTo(0.5f, 200, Easing.In);

                    logo.MoveTo(logoTrackingPosition, lastState == MenuState.EnteringMode ? 0 : 200, Easing.In);

                    logoDelayedAction = Scheduler.AddDelayed(() =>
                    {
                        logoTracking = true;

                        logo.Impact();
                        showOverlays.Value = true;
                    }, 200);
                    break;

                default:
                    logoTracking = true;
                    logo.ScaleTo(0.5f, 200, Easing.OutQuint);
                    break;
                }
                break;

            case MenuState.EnteringMode:
                logoTracking = true;
                break;
            }
        }