Ejemplo n.º 1
0
        private void load(BeatmapListingOverlay beatmapListing, SettingsOverlay settings, RankingsOverlay rankings, OsuConfigManager config, SessionStatics statics)
        {
            holdDelay      = config.GetBindable <float>(OsuSetting.UIHoldActivationDelay);
            loginDisplayed = statics.GetBindable <bool>(Static.LoginOverlayDisplayed);

            if (host.CanExit)
            {
                AddInternal(exitConfirmOverlay = new ExitConfirmOverlay
                {
                    Action = () =>
                    {
                        if (holdDelay.Value > 0)
                        {
                            confirmAndExit();
                        }
                        else
                        {
                            this.Exit();
                        }
                    }
                });
            }

            AddRangeInternal(new[]
            {
                buttonsContainer = new ParallaxContainer
                {
                    ParallaxAmount = 0.01f,
                    Children       = new Drawable[]
                    {
                        buttons = new ButtonSystem
                        {
                            OnEdit  = delegate { this.Push(new Editor()); },
                            OnSolo  = onSolo,
                            OnMulti = delegate { this.Push(new Multiplayer()); },
                            OnExit  = confirmAndExit,
                        }
                    }
                },
                sideFlashes = new MenuSideFlashes(),
                songTicker  = new SongTicker
                {
                    Anchor = Anchor.TopRight,
                    Origin = Anchor.TopRight,
                    Margin = new MarginPadding {
                        Right = 15, Top = 5
                    }
                },
                exitConfirmOverlay?.CreateProxy() ?? Drawable.Empty()
            });

            buttons.StateChanged += state =>
            {
                switch (state)
                {
                case ButtonSystemState.Initial:
                case ButtonSystemState.Exit:
                    Background.FadeColour(Color4.White, 500, Easing.OutSine);
                    break;

                default:
                    Background.FadeColour(OsuColour.Gray(0.8f), 500, Easing.OutSine);
                    break;
                }
            };

            buttons.OnSettings       = () => settings?.ToggleVisibility();
            buttons.OnBeatmapListing = () => beatmapListing?.ToggleVisibility();
            buttons.OnChart          = () => rankings?.ShowSpotlights();

            LoadComponentAsync(background = new BackgroundScreenDefault());
            preloadSongSelect();
        }
Ejemplo n.º 2
0
        private void load(OsuColour colours)
        {
            InternalChildren = new Drawable[]
            {
                new AspectContainer
                {
                    RelativeSizeAxes = Axes.Y,
                    Anchor           = Anchor.Centre,
                    Origin           = Anchor.Centre,
                    Height           = overscan,
                    Children         = new Drawable[]
                    {
                        circleOuterBackground = new CircularContainer
                        {
                            RelativeSizeAxes = Axes.Both,
                            Anchor           = Anchor.Centre,
                            Origin           = Anchor.Centre,
                            Masking          = true,
                            Children         = new Drawable[]
                            {
                                new Box
                                {
                                    Alpha            = 0.2f,
                                    RelativeSizeAxes = Axes.Both,
                                    Colour           = Color4.Black,
                                }
                            }
                        },
                        circleOuter = new CircularContainer
                        {
                            Size       = new Vector2(circle_outer_scale),
                            EdgeEffect = new EdgeEffectParameters
                            {
                                Colour = Color4.Black.Opacity(0.4f),
                                Type   = EdgeEffectType.Shadow,
                                Radius = 15,
                            },
                            RelativeSizeAxes = Axes.Both,
                            Anchor           = Anchor.Centre,
                            Origin           = Anchor.Centre,
                            Masking          = true,
                            Children         = new Drawable[]
                            {
                                new Box
                                {
                                    RelativeSizeAxes = Axes.Both,
                                    Colour           = Color4.White,
                                },
                                backgroundParallax = new ParallaxContainer
                                {
                                    RelativeSizeAxes = Axes.Both,
                                    ParallaxAmount   = 0.01f,
                                    Anchor           = Anchor.Centre,
                                    Origin           = Anchor.Centre,
                                    Children         = new Drawable[]
                                    {
                                        new Sprite
                                        {
                                            RelativeSizeAxes = Axes.Both,
                                            Alpha            = 0.2f,
                                            Texture          = Beatmap.Value.Background,
                                            Anchor           = Anchor.Centre,
                                            Origin           = Anchor.Centre,
                                            FillMode         = FillMode.Fill
                                        }
                                    }
                                },
                                modeChangeButtons = new ResultModeTabControl
                                {
                                    Anchor           = Anchor.BottomCentre,
                                    Origin           = Anchor.BottomCentre,
                                    RelativeSizeAxes = Axes.X,
                                    Height           = 50,
                                    Margin           = new MarginPadding {
                                        Bottom = 110
                                    },
                                },
                                new OsuSpriteText
                                {
                                    Anchor = Anchor.CentreLeft,
                                    Origin = Anchor.BottomCentre,
                                    Text   = $"{Score.MaxCombo}x",
                                    RelativePositionAxes = Axes.X,
                                    Font   = OsuFont.GetFont(weight: FontWeight.Bold, size: 40),
                                    X      = 0.1f,
                                    Colour = colours.BlueDarker,
                                },
                                new OsuSpriteText
                                {
                                    Anchor = Anchor.CentreLeft,
                                    Origin = Anchor.TopCentre,
                                    Text   = "max combo",
                                    Font   = OsuFont.GetFont(size: 20),
                                    RelativePositionAxes = Axes.X,
                                    X      = 0.1f,
                                    Colour = colours.Gray6,
                                },
                                new OsuSpriteText
                                {
                                    Anchor = Anchor.CentreLeft,
                                    Origin = Anchor.BottomCentre,
                                    Text   = $"{Score.Accuracy:P2}",
                                    Font   = OsuFont.GetFont(weight: FontWeight.Bold, size: 40),
                                    RelativePositionAxes = Axes.X,
                                    X      = 0.9f,
                                    Colour = colours.BlueDarker,
                                },
                                new OsuSpriteText
                                {
                                    Anchor = Anchor.CentreLeft,
                                    Origin = Anchor.TopCentre,
                                    Text   = "accuracy",
                                    Font   = OsuFont.GetFont(size: 20),
                                    RelativePositionAxes = Axes.X,
                                    X      = 0.9f,
                                    Colour = colours.Gray6,
                                },
                            }
                        },
                        circleInner = new CircularContainer
                        {
                            Size       = new Vector2(0.6f),
                            EdgeEffect = new EdgeEffectParameters
                            {
                                Colour = Color4.Black.Opacity(0.4f),
                                Type   = EdgeEffectType.Shadow,
                                Radius = 15,
                            },
                            RelativeSizeAxes = Axes.Both,
                            Anchor           = Anchor.Centre,
                            Origin           = Anchor.Centre,
                            Masking          = true,
                            Children         = new Drawable[]
                            {
                                new Box
                                {
                                    RelativeSizeAxes = Axes.Both,
                                    Colour           = Color4.White,
                                },
                            }
                        }
                    }
                },
                new BackButton
                {
                    Anchor = Anchor.BottomLeft,
                    Origin = Anchor.BottomLeft,
                    Action = this.Exit
                },
            };

            foreach (var t in CreateResultPages())
            {
                modeChangeButtons.AddItem(t);
            }
            modeChangeButtons.Current.Value = modeChangeButtons.Items.FirstOrDefault();

            modeChangeButtons.Current.BindValueChanged(page =>
            {
                currentPage?.FadeOut();
                currentPage?.Expire();

                currentPage = page.NewValue?.CreatePage();

                if (currentPage != null)
                {
                    circleInner.Add(currentPage);
                }
            }, true);
        }
Ejemplo n.º 3
0
        private void load(OsuColour colours)
        {
            Children = new Drawable[]
            {
                new AspectContainer
                {
                    RelativeSizeAxes = Axes.Y,
                    Anchor           = Anchor.Centre,
                    Origin           = Anchor.Centre,
                    Height           = overscan,
                    Children         = new Drawable[]
                    {
                        circleOuterBackground = new CircularContainer
                        {
                            RelativeSizeAxes = Axes.Both,
                            Anchor           = Anchor.Centre,
                            Origin           = Anchor.Centre,
                            Masking          = true,
                            Children         = new Drawable[]
                            {
                                new Box
                                {
                                    Alpha            = 0.2f,
                                    RelativeSizeAxes = Axes.Both,
                                    Colour           = Color4.Black,
                                }
                            }
                        },
                        circleOuter = new CircularContainer
                        {
                            Size       = new Vector2(circle_outer_scale),
                            EdgeEffect = new EdgeEffect
                            {
                                Colour = Color4.Black.Opacity(0.4f),
                                Type   = EdgeEffectType.Shadow,
                                Radius = 15,
                            },
                            RelativeSizeAxes = Axes.Both,
                            Anchor           = Anchor.Centre,
                            Origin           = Anchor.Centre,
                            Masking          = true,
                            Children         = new Drawable[]
                            {
                                new Box
                                {
                                    RelativeSizeAxes = Axes.Both,
                                    Colour           = Color4.White,
                                },
                                backgroundParallax = new ParallaxContainer
                                {
                                    RelativeSizeAxes = Axes.Both,
                                    ParallaxAmount   = 0.01f,
                                    Scale            = new Vector2(1 / circle_outer_scale / overscan),
                                    Anchor           = Anchor.Centre,
                                    Origin           = Anchor.Centre,
                                    Children         = new Drawable[]
                                    {
                                        new Sprite
                                        {
                                            Alpha    = 0.2f,
                                            Texture  = Beatmap?.Background,
                                            Anchor   = Anchor.Centre,
                                            Origin   = Anchor.Centre,
                                            FillMode = FillMode.Fill
                                        }
                                    }
                                },
                                modeChangeButtons = new ResultModeTabControl
                                {
                                    Anchor           = Anchor.BottomCentre,
                                    Origin           = Anchor.BottomCentre,
                                    RelativeSizeAxes = Axes.X,
                                    Height           = 50,
                                    Margin           = new MarginPadding {
                                        Bottom = 110
                                    },
                                },
                                new SpriteText
                                {
                                    Text                 = $"{score.MaxCombo}x",
                                    TextSize             = 40,
                                    RelativePositionAxes = Axes.X,
                                    Font                 = @"Exo2.0-Bold",
                                    X      = 0.1f,
                                    Colour = colours.BlueDarker,
                                    Anchor = Anchor.CentreLeft,
                                    Origin = Anchor.BottomCentre,
                                },
                                new SpriteText
                                {
                                    Text                 = "max combo",
                                    TextSize             = 20,
                                    RelativePositionAxes = Axes.X,
                                    X      = 0.1f,
                                    Colour = colours.Gray6,
                                    Anchor = Anchor.CentreLeft,
                                    Origin = Anchor.TopCentre,
                                },
                                new SpriteText
                                {
                                    Text                 = $"{score.Accuracy:P2}",
                                    TextSize             = 40,
                                    RelativePositionAxes = Axes.X,
                                    Font                 = @"Exo2.0-Bold",
                                    X      = 0.9f,
                                    Colour = colours.BlueDarker,
                                    Anchor = Anchor.CentreLeft,
                                    Origin = Anchor.BottomCentre,
                                },
                                new SpriteText
                                {
                                    Text                 = "accuracy",
                                    TextSize             = 20,
                                    RelativePositionAxes = Axes.X,
                                    X      = 0.9f,
                                    Colour = colours.Gray6,
                                    Anchor = Anchor.CentreLeft,
                                    Origin = Anchor.TopCentre,
                                },
                            }
                        },
                        circleInner = new CircularContainer
                        {
                            Size       = new Vector2(0.6f),
                            EdgeEffect = new EdgeEffect
                            {
                                Colour = Color4.Black.Opacity(0.4f),
                                Type   = EdgeEffectType.Shadow,
                                Radius = 15,
                            },
                            RelativeSizeAxes = Axes.Both,
                            Anchor           = Anchor.Centre,
                            Origin           = Anchor.Centre,
                            Masking          = true,
                            Children         = new Drawable[]
                            {
                                new Box
                                {
                                    RelativeSizeAxes = Axes.Both,
                                    Colour           = Color4.White,
                                },
                            }
                        }
                    }
                },
                new BackButton
                {
                    Anchor = Anchor.BottomLeft,
                    Origin = Anchor.BottomLeft,
                    Action = Exit
                },
            };

            modeChangeButtons.AddItem(ResultMode.Summary);
            modeChangeButtons.AddItem(ResultMode.Ranking);
            //modeChangeButtons.AddItem(ResultMode.Share);

            modeChangeButtons.Current.ValueChanged += mode =>
            {
                currentPage?.FadeOut();
                currentPage?.Expire();

                switch (mode)
                {
                case ResultMode.Summary:
                    currentPage = new ResultsPageScore(score, Beatmap);
                    break;

                case ResultMode.Ranking:
                    currentPage = new ResultsPageRanking(score, Beatmap);
                    break;
                }

                if (currentPage != null)
                {
                    circleInner.Add(currentPage);
                }
            };

            modeChangeButtons.Current.TriggerChange();
        }