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(); }
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); }
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(); }