6 Commits

Author SHA1 Message Date
ab7e5c94f1 make autoupdates work, at last 2025-11-11 19:11:36 +03:00
8dc9ea4553 add startup disclaimer 2025-11-11 18:14:38 +03:00
dcf553c252 Revert "Remove disclaimer screen completely"
This reverts commit bd0e2b4dde.
2025-11-11 16:45:04 +03:00
43f3a506ea new icon + default logo color 2025-11-11 00:04:18 +03:00
ab51579c27 added quit w/ replay button to pause menu; minor visual changes for ranks 2025-11-10 22:39:10 +03:00
d8e977c05f minor changes to mod scoring, all mods are ranked now
Probably all user-playable mods are ranked by default now,
Mania key mods were reverted to 1.0x score multiplier
2025-11-10 18:52:07 +03:00
24 changed files with 305 additions and 54 deletions

View File

@@ -115,12 +115,10 @@ namespace osu.Desktop
if (IsFirstRun) if (IsFirstRun)
LocalConfig.SetValue(OsuSetting.ReleaseStream, ReleaseStream.Lazer); LocalConfig.SetValue(OsuSetting.ReleaseStream, ReleaseStream.Lazer);
// if (IsPackageManaged) if (IsPackageManaged)
// return new NoActionUpdateManager(); return new NoActionUpdateManager();
// return new VelopackUpdateManager(); return new VelopackUpdateManager(); // yay
return new NoActionUpdateManager(); // for now, APIs are useless for actually downloading the releases. TODO: adapt UpdateManager for gitea
} }
public override bool RestartAppWhenExited() public override bool RestartAppWhenExited()

View File

@@ -55,7 +55,7 @@ namespace osu.Desktop.Updater
try try
{ {
IUpdateSource updateSource = new GithubSource(@"https://github.com/ppy/osu", null, ReleaseStream.Value == Game.Configuration.ReleaseStream.Tachyon); IUpdateSource updateSource = new GiteaSource(@"https://gitea.jvnko.boats/jvnkosu/client", null, ReleaseStream.Value == Game.Configuration.ReleaseStream.Tachyon);
Velopack.UpdateManager updateManager = new Velopack.UpdateManager(updateSource, new UpdateOptions Velopack.UpdateManager updateManager = new Velopack.UpdateManager(updateSource, new UpdateOptions
{ {
AllowVersionDowngrade = true AllowVersionDowngrade = true

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 401 KiB

View File

@@ -14,8 +14,8 @@ namespace osu.Game.Rulesets.Mania.Mods
public override string Acronym => Name; public override string Acronym => Name;
public abstract int KeyCount { get; } public abstract int KeyCount { get; }
public override ModType Type => ModType.Conversion; public override ModType Type => ModType.Conversion;
public override double ScoreMultiplier => 0.9; public override double ScoreMultiplier => 1;
public override bool Ranked => UsesDefaultConfiguration; public override bool Ranked => true;
public void ApplyToBeatmapConverter(IBeatmapConverter beatmapConverter) public void ApplyToBeatmapConverter(IBeatmapConverter beatmapConverter)
{ {

View File

@@ -14,6 +14,5 @@ namespace osu.Game.Rulesets.Mania.Mods
public override string Acronym => "1K"; public override string Acronym => "1K";
public override IconUsage? Icon => OsuIcon.ModOneKey; public override IconUsage? Icon => OsuIcon.ModOneKey;
public override LocalisableString Description => @"Play with one key."; public override LocalisableString Description => @"Play with one key.";
public override bool Ranked => false;
} }
} }

View File

@@ -14,6 +14,5 @@ namespace osu.Game.Rulesets.Mania.Mods
public override string Acronym => "10K"; public override string Acronym => "10K";
public override IconUsage? Icon => OsuIcon.ModTenKeys; public override IconUsage? Icon => OsuIcon.ModTenKeys;
public override LocalisableString Description => @"Play with ten keys."; public override LocalisableString Description => @"Play with ten keys.";
public override bool Ranked => false;
} }
} }

View File

@@ -14,6 +14,5 @@ namespace osu.Game.Rulesets.Mania.Mods
public override string Acronym => "2K"; public override string Acronym => "2K";
public override IconUsage? Icon => OsuIcon.ModTwoKeys; public override IconUsage? Icon => OsuIcon.ModTwoKeys;
public override LocalisableString Description => @"Play with two keys."; public override LocalisableString Description => @"Play with two keys.";
public override bool Ranked => false;
} }
} }

View File

@@ -14,6 +14,5 @@ namespace osu.Game.Rulesets.Mania.Mods
public override string Acronym => "3K"; public override string Acronym => "3K";
public override IconUsage? Icon => OsuIcon.ModThreeKeys; public override IconUsage? Icon => OsuIcon.ModThreeKeys;
public override LocalisableString Description => @"Play with three keys."; public override LocalisableString Description => @"Play with three keys.";
public override bool Ranked => false;
} }
} }

View File

@@ -0,0 +1,29 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using osu.Framework.Allocation;
using osu.Game.Online.API;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Screens.Menu;
namespace osu.Game.Tests.Visual.Menus
{
public partial class TestSceneDisclaimer : ScreenTestScene
{
[BackgroundDependencyLoader]
private void load()
{
AddStep("load disclaimer", () => LoadScreen(new Disclaimer()));
AddStep("toggle support", () =>
{
((DummyAPIAccess)API).LocalUser.Value = new APIUser
{
Username = API.LocalUser.Value.Username,
Id = API.LocalUser.Value.Id + 1,
IsSupporter = !API.LocalUser.Value.IsSupporter,
};
});
}
}
}

View File

@@ -42,7 +42,7 @@ namespace osu.Game.Configuration
SetDefault(OsuSetting.Ruleset, string.Empty); SetDefault(OsuSetting.Ruleset, string.Empty);
SetDefault(OsuSetting.Skin, SkinInfo.ARGON_SKIN.ToString()); SetDefault(OsuSetting.Skin, SkinInfo.ARGON_SKIN.ToString());
SetDefault(OsuSetting.MenuCookieColor, Colour4.FromHex(@"ff66ba")); SetDefault(OsuSetting.MenuCookieColor, Colour4.FromHex(@"8400FF"));
SetDefault(OsuSetting.BeatmapDetailTab, BeatmapDetailTab.Local); SetDefault(OsuSetting.BeatmapDetailTab, BeatmapDetailTab.Local);
SetDefault(OsuSetting.BeatmapLeaderboardSortMode, LeaderboardSortMode.Score); SetDefault(OsuSetting.BeatmapLeaderboardSortMode, LeaderboardSortMode.Score);

View File

@@ -53,7 +53,7 @@ namespace osu.Game.Online.Leaderboards
Spacing = new Vector2(-3, 0), Spacing = new Vector2(-3, 0),
Padding = new MarginPadding { Top = -5 }, Padding = new MarginPadding { Top = -5 },
Colour = GetRankLetterColour(rank), Colour = GetRankLetterColour(rank),
Font = OsuFont.TorusAlternate.With(size: 42, weight: FontWeight.SemiBold), Font = OsuFont.TorusAlternate.With(size: 40, weight: FontWeight.Bold),
Text = GetRankLetter(rank), Text = GetRankLetter(rank),
ShadowColour = Color4.Black.Opacity(0.3f), ShadowColour = Color4.Black.Opacity(0.3f),
ShadowOffset = new Vector2(0, 0.08f), ShadowOffset = new Vector2(0, 0.08f),
@@ -72,12 +72,14 @@ namespace osu.Game.Online.Leaderboards
switch (rank) switch (rank)
{ {
case ScoreRank.SH: case ScoreRank.SH:
return @"S"; return @"S+";
case ScoreRank.X: case ScoreRank.X:
case ScoreRank.XH:
return @"SS"; return @"SS";
case ScoreRank.XH:
return @"SS+";
default: default:
return rank.ToString(); return rank.ToString();
} }

View File

@@ -932,7 +932,7 @@ namespace osu.Game
protected virtual Loader CreateLoader() => new Loader(); protected virtual Loader CreateLoader() => new Loader();
protected virtual UpdateManager CreateUpdateManager() => new NoActionUpdateManager(); protected virtual UpdateManager CreateUpdateManager() => new UpdateManager();
/// <summary> /// <summary>
/// Adjust the globally applied <see cref="DrawSizePreservingFillContainer.TargetDrawSize"/> in every <see cref="ScalingContainer"/>. /// Adjust the globally applied <see cref="DrawSizePreservingFillContainer.TargetDrawSize"/> in every <see cref="ScalingContainer"/>.
@@ -1729,12 +1729,13 @@ namespace osu.Game
{ {
case IntroScreen intro: case IntroScreen intro:
introScreen = intro; introScreen = intro;
SimpleNotification notification = new SimpleNotification // SimpleNotification notification = new SimpleNotification
{ // {
Text = ButtonSystemStrings.GreetingNotification, // Text = ButtonSystemStrings.GreetingNotification,
Transient = true, // Transient = true,
}; // PopInSampleName = "",
Notifications?.Post(notification); // };
// Notifications?.Post(notification);
devBuildBanner?.Show(); devBuildBanner?.Show();
break; break;

View File

@@ -2,6 +2,7 @@
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Development;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Sprites;
@@ -9,6 +10,7 @@ using osu.Framework.Graphics.Textures;
using osu.Game.Graphics; using osu.Game.Graphics;
using osu.Game.Graphics.Sprites; using osu.Game.Graphics.Sprites;
using osuTK; using osuTK;
using osuTK.Graphics;
namespace osu.Game.Overlays namespace osu.Game.Overlays
{ {
@@ -25,31 +27,43 @@ namespace osu.Game.Overlays
Alpha = 0; Alpha = 0;
AddRange(new Drawable[] AddRange(new Drawable[]
{
new FillFlowContainer
{
AutoSizeAxes = Axes.Both,
Direction = FillDirection.Vertical,
Children = new Drawable[]
{
new FillFlowContainer
{
AutoSizeAxes = Axes.Both,
Direction = FillDirection.Horizontal,
Spacing = new Vector2(5),
Anchor = Anchor.TopCentre,
Origin = Anchor.TopCentre,
Children = new Drawable[]
{ {
new OsuSpriteText new OsuSpriteText
{ {
Anchor = Anchor.BottomCentre, Font = OsuFont.GetFont(weight: FontWeight.Bold),
Origin = Anchor.BottomCentre, Text = game.Name
Font = OsuFont.Torus.With(size: 12),
Colour = colours.GrayF,
Text = $@"jvnkosu! " + game.Version,
Y = -12,
}, },
new OsuSpriteText new OsuSpriteText
{ {
Anchor = Anchor.BottomCentre, Colour = DebugUtils.IsDebugBuild ? colours.Red : Color4.White,
Origin = Anchor.BottomCentre, Text = game.Version
Font = OsuFont.Torus.With(weight: FontWeight.Bold, size: 15), },
Colour = colours.Yellow, }
Text = "Experimental version",
}, },
new Sprite new Sprite
{ {
Anchor = Anchor.BottomCentre, // Anchor = Anchor.BottomCentre,
Origin = Anchor.BottomCentre, // Origin = Anchor.BottomCentre,
Texture = textures.Get(@"Menu/dev-build-footer"), Texture = textures.Get(@"Menu/dev-build-footer"),
Scale = new Vector2(0.4f, 1), Scale = new Vector2(0.4f, 1),
Y = 2, Y = 2,
}
},
}, },
}); });
} }

View File

@@ -110,7 +110,7 @@ namespace osu.Game.Rulesets.Mods
public virtual bool RequiresConfiguration => false; public virtual bool RequiresConfiguration => false;
[JsonIgnore] [JsonIgnore]
public virtual bool Ranked => false; public virtual bool Ranked => true;
/// <summary> /// <summary>
/// The mods this mod cannot be enabled with. /// The mods this mod cannot be enabled with.

View File

@@ -23,6 +23,8 @@ namespace osu.Game.Rulesets.Mods
public sealed override bool UserPlayable => false; public sealed override bool UserPlayable => false;
public sealed override bool ValidForMultiplayer => false; public sealed override bool ValidForMultiplayer => false;
public sealed override bool ValidForMultiplayerAsFreeMod => false; public sealed override bool ValidForMultiplayerAsFreeMod => false;
public override bool Ranked => false;
public override Type[] IncompatibleMods => new[] { typeof(ModCinema), typeof(ModRelax), typeof(ModAdaptiveSpeed), typeof(ModTouchDevice) }; public override Type[] IncompatibleMods => new[] { typeof(ModCinema), typeof(ModRelax), typeof(ModAdaptiveSpeed), typeof(ModTouchDevice) };

View File

@@ -31,6 +31,7 @@ namespace osu.Game.Rulesets.Mods
public override LocalisableString Description => "Watch the video without visual distractions."; public override LocalisableString Description => "Watch the video without visual distractions.";
public override Type[] IncompatibleMods => base.IncompatibleMods.Concat(new[] { typeof(ModAutoplay), typeof(ModNoFail), typeof(ModFailCondition) }).ToArray(); public override Type[] IncompatibleMods => base.IncompatibleMods.Concat(new[] { typeof(ModAutoplay), typeof(ModNoFail), typeof(ModFailCondition) }).ToArray();
public override bool Ranked => false;
public void ApplyToHUD(HUDOverlay overlay) public void ApplyToHUD(HUDOverlay overlay)
{ {

View File

@@ -23,6 +23,8 @@ namespace osu.Game.Screens
{ {
public partial class Loader : StartupScreen public partial class Loader : StartupScreen
{ {
private bool showDisclaimer;
public Loader() public Loader()
{ {
ValidForResume = false; ValidForResume = false;
@@ -35,7 +37,13 @@ namespace osu.Game.Screens
private LoadingSpinner spinner; private LoadingSpinner spinner;
private ScheduledDelegate spinnerShow; private ScheduledDelegate spinnerShow;
protected virtual OsuScreen CreateLoadableScreen() => getIntroSequence(); protected virtual OsuScreen CreateLoadableScreen()
{
if (showDisclaimer)
return new Disclaimer(getIntroSequence());
return getIntroSequence();
}
private IntroScreen getIntroSequence() private IntroScreen getIntroSequence()
{ {
@@ -106,8 +114,9 @@ namespace osu.Game.Screens
} }
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load(OsuConfigManager config) private void load(OsuGameBase game, OsuConfigManager config)
{ {
showDisclaimer = game.IsDeployedBuild || !DebugUtils.IsDebugBuild;
introSequence = config.Get<IntroSequence>(OsuSetting.IntroSequence); introSequence = config.Get<IntroSequence>(OsuSetting.IntroSequence);
} }

View File

@@ -0,0 +1,161 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
#nullable disable
using System.Collections.Generic;
using System.Linq;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Extensions.IEnumerableExtensions;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Screens;
using osu.Game.Graphics;
using osu.Game.Graphics.Containers;
using osu.Game.Online.API;
using osu.Game.Online.API.Requests.Responses;
using osuTK;
using osuTK.Graphics;
namespace osu.Game.Screens.Menu
{
public partial class Disclaimer : StartupScreen
{
private SpriteIcon icon;
private Color4 iconColour;
private LinkFlowContainer textFlow;
private const float icon_y = -85;
private const float icon_size = 30;
private readonly OsuScreen nextScreen;
private readonly Bindable<APIUser> currentUser = new Bindable<APIUser>();
private FillFlowContainer fill;
private readonly List<ITextPart> expendableText = new List<ITextPart>();
public Disclaimer(OsuScreen nextScreen = null)
{
this.nextScreen = nextScreen;
ValidForResume = false;
}
[Resolved]
private IAPIProvider api { get; set; }
[BackgroundDependencyLoader]
private void load(OsuColour colours)
{
InternalChildren = new Drawable[]
{
icon = new SpriteIcon
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Icon = FontAwesome.Solid.ExclamationTriangle,
Size = new Vector2(icon_size),
Y = icon_y,
},
fill = new FillFlowContainer
{
RelativeSizeAxes = Axes.X,
AutoSizeAxes = Axes.Y,
Direction = FillDirection.Vertical,
Y = icon_y,
Anchor = Anchor.Centre,
Origin = Anchor.TopCentre,
Children = new Drawable[]
{
textFlow = new LinkFlowContainer
{
Width = 680,
AutoSizeAxes = Axes.Y,
TextAnchor = Anchor.TopCentre,
Anchor = Anchor.TopCentre,
Origin = Anchor.TopCentre,
Spacing = new Vector2(0, 2),
},
}
},
};
textFlow.AddText("Disclaimer", t => t.Font = t.Font.With(Typeface.Torus, 30, FontWeight.Regular));
static void formatRegular(SpriteText t) => t.Font = OsuFont.GetFont(size: 20, weight: FontWeight.Regular);
static void formatSemiBold(SpriteText t) => t.Font = OsuFont.GetFont(size: 20, weight: FontWeight.SemiBold);
textFlow.NewParagraph();
textFlow.AddText("This is ", formatRegular);
textFlow.AddText("jvnkosu!", formatSemiBold);
textFlow.AddText(", an unofficial osu!(lazer) server based on official source code.", formatRegular);
textFlow.NewParagraph();
textFlow.AddText("We are not in any way affiliated with, or endorsed by, the osu! team.", formatSemiBold);
textFlow.NewParagraph();
textFlow.NewParagraph();
textFlow.AddText("Thank you, and have fun!", formatRegular);
iconColour = colours.Yellow;
}
protected override void LoadComplete()
{
base.LoadComplete();
if (nextScreen != null)
LoadComponentAsync(nextScreen);
((IBindable<APIUser>)currentUser).BindTo(api.LocalUser);
}
public override void OnSuspending(ScreenTransitionEvent e)
{
base.OnSuspending(e);
// Once this screen has finished being displayed, we don't want to unnecessarily handle user change events.
currentUser.UnbindAll();
}
public override void OnEntering(ScreenTransitionEvent e)
{
base.OnEntering(e);
// icon.RotateTo(10);
icon.FadeOut();
icon.ScaleTo(0.5f);
icon.Delay(500).FadeIn(50).ScaleTo(1, 500, Easing.OutQuint);
fill.MoveToOffset(new Vector2(0, 15), 0, Easing.OutQuart);
using (BeginDelayedSequence(3000))
{
icon.MoveToY(icon_y, 0, Easing.InQuart)
.FadeColour(Color4.White, 160)
.Then()
.FadeColour(iconColour, 200, Easing.OutQuint);
Schedule(() => expendableText.SelectMany(t => t.Drawables).ForEach(t =>
{
t.FadeOut(100);
t.ScaleTo(new Vector2(0, 1), 100, Easing.OutQuart);
}));
}
double delay = 500;
foreach (var c in textFlow.Children)
c.FadeTo(0.001f).Delay(delay += 20).FadeIn(500);
this
.FadeInFromZero(500)
.Then(5500)
.FadeOut(250)
.ScaleTo(0.9f, 250, Easing.InQuint)
.Finally(_ =>
{
if (nextScreen != null)
this.Push(nextScreen);
});
}
}
}

View File

@@ -18,11 +18,13 @@ using osu.Game.Graphics;
using osu.Game.Graphics.Containers; using osu.Game.Graphics.Containers;
using osu.Game.Graphics.Sprites; using osu.Game.Graphics.Sprites;
using osu.Game.Graphics.UserInterface; using osu.Game.Graphics.UserInterface;
using osu.Game.Graphics.UserInterfaceV2;
using osu.Game.Input.Bindings; using osu.Game.Input.Bindings;
using osuTK; using osuTK;
using osuTK.Graphics; using osuTK.Graphics;
using osu.Game.Localisation; using osu.Game.Localisation;
using osu.Game.Utils; using osu.Game.Utils;
using System.Runtime.InteropServices;
namespace osu.Game.Screens.Play namespace osu.Game.Screens.Play
{ {
@@ -40,6 +42,7 @@ namespace osu.Game.Screens.Play
public Action? OnResume { get; init; } public Action? OnResume { get; init; }
public Action? OnRetry { get; init; } public Action? OnRetry { get; init; }
public Action? OnQuit { get; init; } public Action? OnQuit { get; init; }
public Action? OnQuitReplay { get; init; }
/// <summary> /// <summary>
/// Action that is invoked when <see cref="GlobalAction.Back"/> is triggered. /// Action that is invoked when <see cref="GlobalAction.Back"/> is triggered.
@@ -69,6 +72,8 @@ namespace osu.Game.Screens.Play
[Resolved] [Resolved]
private GlobalActionContainer globalAction { get; set; } = null!; private GlobalActionContainer globalAction { get; set; } = null!;
private ShearedButton saveReplay { get; set; } = null!;
protected GameplayMenuOverlay() protected GameplayMenuOverlay()
{ {
RelativeSizeAxes = Axes.Both; RelativeSizeAxes = Axes.Both;
@@ -90,7 +95,7 @@ namespace osu.Game.Screens.Play
RelativeSizeAxes = Axes.X, RelativeSizeAxes = Axes.X,
AutoSizeAxes = Axes.Y, AutoSizeAxes = Axes.Y,
Direction = FillDirection.Vertical, Direction = FillDirection.Vertical,
Spacing = new Vector2(0, 50), Spacing = new Vector2(0, 25),
Origin = Anchor.Centre, Origin = Anchor.Centre,
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Children = new Drawable[] Children = new Drawable[]
@@ -118,6 +123,15 @@ namespace osu.Game.Screens.Play
Radius = 50 Radius = 50
}, },
}, },
saveReplay = new ShearedButton
{
Text = "Quit and save replay",
Origin = Anchor.TopCentre,
Anchor = Anchor.TopCentre,
Height = 32,
Colour = colours.PurpleLight,
// Visibility = false
},
playInfoText = new OsuTextFlowContainer(cp => cp.Font = OsuFont.GetFont(size: 18)) playInfoText = new OsuTextFlowContainer(cp => cp.Font = OsuFont.GetFont(size: 18))
{ {
Origin = Anchor.TopCentre, Origin = Anchor.TopCentre,
@@ -138,6 +152,12 @@ namespace osu.Game.Screens.Play
if (OnQuit != null) if (OnQuit != null)
AddButton(GameplayMenuOverlayStrings.Quit, new Color4(170, 27, 39, 255), () => OnQuit.Invoke()); AddButton(GameplayMenuOverlayStrings.Quit, new Color4(170, 27, 39, 255), () => OnQuit.Invoke());
if (OnQuitReplay != null)
{
// saveReplay.Visibility = true;
saveReplay.Action = () => OnQuitReplay.Invoke();
}
State.ValueChanged += _ => InternalButtons.Deselect(); State.ValueChanged += _ => InternalButtons.Deselect();
updateInfoText(); updateInfoText();

View File

@@ -516,6 +516,7 @@ namespace osu.Game.Screens.Play
Retries = RestartCount, Retries = RestartCount,
OnRetry = () => Restart(), OnRetry = () => Restart(),
OnQuit = () => PerformExitWithConfirmation(), OnQuit = () => PerformExitWithConfirmation(),
OnQuitReplay = () => PerformExitReplay()
}, },
}, },
}; };
@@ -701,6 +702,20 @@ namespace osu.Game.Screens.Play
return true; return true;
} }
// XXX: replays saved from pause screen, when played back, will continue playing past the point player quits
// unfixable because it's not possible to manually trigger a failure in a way that would be recorded (w/o using a mod)
protected void PerformExitReplay()
{
// manually triggering a failure in a messy manner to avoid score submission
GameplayClockContainer.Stop();
GameplayState.HasFailed = true;
updateGameplayState();
ConcludeFailedScore(Score);
prepareAndImportScoreAsync(true);
PerformExit();
}
private void performUserRequestedSkip() private void performUserRequestedSkip()
{ {
// user requested skip // user requested skip

View File

@@ -49,7 +49,7 @@ namespace osu.Game.Screens.Ranking.Expanded.Accuracy
Spacing = new Vector2(-15, 0), Spacing = new Vector2(-15, 0),
Text = DrawableRank.GetRankLetter(rank), Text = DrawableRank.GetRankLetter(rank),
// Font = OsuFont.Numeric.With(size: 76), // Font = OsuFont.Numeric.With(size: 76),
Font = OsuFont.TorusAlternate.With(size: 128, weight: FontWeight.Bold), Font = OsuFont.TorusAlternate.With(size: 100, weight: FontWeight.Bold),
UseFullGlyphHeight = false UseFullGlyphHeight = false
}, },
superFlash = new BufferedContainer(cachedFrameBuffer: true) superFlash = new BufferedContainer(cachedFrameBuffer: true)
@@ -89,7 +89,7 @@ namespace osu.Game.Screens.Ranking.Expanded.Accuracy
Origin = Anchor.Centre, Origin = Anchor.Centre,
Spacing = new Vector2(-15, 0), Spacing = new Vector2(-15, 0),
Text = DrawableRank.GetRankLetter(rank), Text = DrawableRank.GetRankLetter(rank),
Font = OsuFont.Numeric.With(size: 76), Font = OsuFont.TorusAlternate.With(size: 100, weight: FontWeight.Bold),
UseFullGlyphHeight = false, UseFullGlyphHeight = false,
Shadow = false Shadow = false
}, },

View File

@@ -393,7 +393,7 @@ namespace osu.Game.Screens.SelectV2
Origin = Anchor.Centre, Origin = Anchor.Centre,
Spacing = new Vector2(-2), Spacing = new Vector2(-2),
Colour = DrawableRank.GetRankLetterColour(Score.Rank), Colour = DrawableRank.GetRankLetterColour(Score.Rank),
Font = OsuFont.Numeric.With(size: 14), Font = OsuFont.TorusAlternate.With(size: 24, weight: FontWeight.Bold),
Text = DrawableRank.GetRankLetter(Score.Rank), Text = DrawableRank.GetRankLetter(Score.Rank),
ShadowColour = Color4.Black.Opacity(0.3f), ShadowColour = Color4.Black.Opacity(0.3f),
ShadowOffset = new Vector2(0, 0.08f), ShadowOffset = new Vector2(0, 0.08f),

View File

@@ -42,7 +42,7 @@ namespace osu.Game.Updater
{ {
bool includePrerelease = stream == Configuration.ReleaseStream.Tachyon; bool includePrerelease = stream == Configuration.ReleaseStream.Tachyon;
OsuJsonWebRequest<GitHubRelease[]> releasesRequest = new OsuJsonWebRequest<GitHubRelease[]>("https://api.github.com/repos/ppy/osu/releases?per_page=10&page=1"); OsuJsonWebRequest<GitHubRelease[]> releasesRequest = new OsuJsonWebRequest<GitHubRelease[]>("https://gitea.jvnko.boats/api/v1/repos/jvnkosu/client/releases?limit=10&page=1");
await releasesRequest.PerformAsync(cancellationToken).ConfigureAwait(false); await releasesRequest.PerformAsync(cancellationToken).ConfigureAwait(false);
GitHubRelease[] releases = releasesRequest.ResponseObject; GitHubRelease[] releases = releasesRequest.ResponseObject;

View File

@@ -770,6 +770,9 @@ namespace osu.Game.Users
[Description("Samoa")] [Description("Samoa")]
WS, WS,
[Description("Gensokyo")]
XG,
[Description("Kosovo")] [Description("Kosovo")]
XK, XK,