Compare commits
3 Commits
43f3a506ea
...
2025.1111.
| Author | SHA1 | Date | |
|---|---|---|---|
| ab7e5c94f1 | |||
| 8dc9ea4553 | |||
| dcf553c252 |
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
29
osu.Game.Tests/Visual/Menus/TestSceneDisclaimer.cs
Normal file
29
osu.Game.Tests/Visual/Menus/TestSceneDisclaimer.cs
Normal 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,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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"/>.
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
@@ -26,30 +28,42 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
AddRange(new Drawable[]
|
AddRange(new Drawable[]
|
||||||
{
|
{
|
||||||
new OsuSpriteText
|
new FillFlowContainer
|
||||||
{
|
{
|
||||||
Anchor = Anchor.BottomCentre,
|
AutoSizeAxes = Axes.Both,
|
||||||
Origin = Anchor.BottomCentre,
|
Direction = FillDirection.Vertical,
|
||||||
Font = OsuFont.Torus.With(size: 15, weight: FontWeight.Bold),
|
Children = new Drawable[]
|
||||||
Colour = colours.GrayF,
|
{
|
||||||
Text = $@"jvnkosu! " + game.Version + (game.IsDeployedBuild ? "" : " • Experimental version"),
|
new FillFlowContainer
|
||||||
Y = -3,
|
{
|
||||||
},
|
AutoSizeAxes = Axes.Both,
|
||||||
// new OsuSpriteText
|
Direction = FillDirection.Horizontal,
|
||||||
// {
|
Spacing = new Vector2(5),
|
||||||
// Anchor = Anchor.BottomCentre,
|
Anchor = Anchor.TopCentre,
|
||||||
// Origin = Anchor.BottomCentre,
|
Origin = Anchor.TopCentre,
|
||||||
// Font = OsuFont.Torus.With(weight: FontWeight.Bold, size: 15),
|
Children = new Drawable[]
|
||||||
// Colour = colours.Yellow,
|
{
|
||||||
// Text = "Experimental version",
|
new OsuSpriteText
|
||||||
// },
|
{
|
||||||
new Sprite
|
Font = OsuFont.GetFont(weight: FontWeight.Bold),
|
||||||
{
|
Text = game.Name
|
||||||
Anchor = Anchor.BottomCentre,
|
},
|
||||||
Origin = Anchor.BottomCentre,
|
new OsuSpriteText
|
||||||
Texture = textures.Get(@"Menu/dev-build-footer"),
|
{
|
||||||
Scale = new Vector2(0.4f, 1),
|
Colour = DebugUtils.IsDebugBuild ? colours.Red : Color4.White,
|
||||||
Y = 2,
|
Text = game.Version
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new Sprite
|
||||||
|
{
|
||||||
|
// Anchor = Anchor.BottomCentre,
|
||||||
|
// Origin = Anchor.BottomCentre,
|
||||||
|
Texture = textures.Get(@"Menu/dev-build-footer"),
|
||||||
|
Scale = new Vector2(0.4f, 1),
|
||||||
|
Y = 2,
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
161
osu.Game/Screens/Menu/Disclaimer.cs
Normal file
161
osu.Game/Screens/Menu/Disclaimer.cs
Normal 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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user