mirror of
https://github.com/ppy/osu.git
synced 2024-12-15 07:32:55 +08:00
Merge pull request #4115 from peppy/allow-download-no-supporter
Allow full osu!direct usage regardless of supporter status
This commit is contained in:
commit
863756a252
@ -17,7 +17,6 @@ using osu.Framework.Logging;
|
|||||||
using osu.Framework.Platform;
|
using osu.Framework.Platform;
|
||||||
using osu.Game.Beatmaps.Formats;
|
using osu.Game.Beatmaps.Formats;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
using osu.Game.Graphics;
|
|
||||||
using osu.Game.IO.Archives;
|
using osu.Game.IO.Archives;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
using osu.Game.Online.API.Requests;
|
using osu.Game.Online.API.Requests;
|
||||||
@ -147,16 +146,6 @@ namespace osu.Game.Beatmaps
|
|||||||
|
|
||||||
if (existing != null || api == null) return false;
|
if (existing != null || api == null) return false;
|
||||||
|
|
||||||
if (!api.LocalUser.Value.IsSupporter)
|
|
||||||
{
|
|
||||||
PostNotification?.Invoke(new SimpleNotification
|
|
||||||
{
|
|
||||||
Icon = FontAwesome.fa_superpowers,
|
|
||||||
Text = "You gotta be an osu!supporter to download for now 'yo"
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
var downloadNotification = new DownloadNotification
|
var downloadNotification = new DownloadNotification
|
||||||
{
|
{
|
||||||
CompletionText = $"Imported {beatmapSetInfo.Metadata.Artist} - {beatmapSetInfo.Metadata.Title}!",
|
CompletionText = $"Imported {beatmapSetInfo.Metadata.Artist} - {beatmapSetInfo.Metadata.Title}!",
|
||||||
|
@ -61,21 +61,21 @@ namespace osu.Game.Graphics.Containers
|
|||||||
AddText(text.Substring(previousLinkEnd));
|
AddText(text.Substring(previousLinkEnd));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddLink(string text, string url, LinkAction linkType = LinkAction.External, string linkArgument = null, string tooltipText = null, Action<SpriteText> creationParameters = null)
|
public IEnumerable<Drawable> AddLink(string text, string url, LinkAction linkType = LinkAction.External, string linkArgument = null, string tooltipText = null, Action<SpriteText> creationParameters = null)
|
||||||
=> createLink(AddText(text, creationParameters), text, url, linkType, linkArgument, tooltipText);
|
=> createLink(AddText(text, creationParameters), text, url, linkType, linkArgument, tooltipText);
|
||||||
|
|
||||||
public void AddLink(string text, Action action, string tooltipText = null, Action<SpriteText> creationParameters = null)
|
public IEnumerable<Drawable> AddLink(string text, Action action, string tooltipText = null, Action<SpriteText> creationParameters = null)
|
||||||
=> createLink(AddText(text, creationParameters), text, tooltipText: tooltipText, action: action);
|
=> createLink(AddText(text, creationParameters), text, tooltipText: tooltipText, action: action);
|
||||||
|
|
||||||
public void AddLink(IEnumerable<SpriteText> text, string url, LinkAction linkType = LinkAction.External, string linkArgument = null, string tooltipText = null)
|
public IEnumerable<Drawable> AddLink(IEnumerable<SpriteText> text, string url, LinkAction linkType = LinkAction.External, string linkArgument = null, string tooltipText = null)
|
||||||
{
|
{
|
||||||
foreach (var t in text)
|
foreach (var t in text)
|
||||||
AddArbitraryDrawable(t);
|
AddArbitraryDrawable(t);
|
||||||
|
|
||||||
createLink(text, null, url, linkType, linkArgument, tooltipText);
|
return createLink(text, null, url, linkType, linkArgument, tooltipText);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createLink(IEnumerable<Drawable> drawables, string text, string url = null, LinkAction linkType = LinkAction.External, string linkArgument = null, string tooltipText = null, Action action = null)
|
private IEnumerable<Drawable> createLink(IEnumerable<Drawable> drawables, string text, string url = null, LinkAction linkType = LinkAction.External, string linkArgument = null, string tooltipText = null, Action action = null)
|
||||||
{
|
{
|
||||||
AddInternal(new DrawableLinkCompiler(drawables.OfType<SpriteText>().ToList())
|
AddInternal(new DrawableLinkCompiler(drawables.OfType<SpriteText>().ToList())
|
||||||
{
|
{
|
||||||
@ -122,6 +122,8 @@ namespace osu.Game.Graphics.Containers
|
|||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return drawables;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We want the compilers to always be visible no matter where they are, so RelativeSizeAxes is used.
|
// We want the compilers to always be visible no matter where they are, so RelativeSizeAxes is used.
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
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;
|
||||||
@ -19,6 +20,6 @@ namespace osu.Game.Graphics.Containers
|
|||||||
|
|
||||||
public void AddArbitraryDrawable(Drawable drawable) => AddInternal(drawable);
|
public void AddArbitraryDrawable(Drawable drawable) => AddInternal(drawable);
|
||||||
|
|
||||||
public void AddIcon(FontAwesome icon, Action<SpriteText> creationParameters = null) => AddText(((char)icon).ToString(), creationParameters);
|
public IEnumerable<Drawable> AddIcon(FontAwesome icon, Action<SpriteText> creationParameters = null) => AddText(((char)icon).ToString(), creationParameters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Screens;
|
using osu.Framework.Screens;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
@ -24,7 +28,10 @@ namespace osu.Game.Screens.Menu
|
|||||||
|
|
||||||
public override bool CursorVisible => false;
|
public override bool CursorVisible => false;
|
||||||
|
|
||||||
private const float icon_y = -0.09f;
|
private readonly List<Drawable> supporterDrawables = new List<Drawable>();
|
||||||
|
private Drawable heart;
|
||||||
|
|
||||||
|
private const float icon_y = -85;
|
||||||
|
|
||||||
public Disclaimer()
|
public Disclaimer()
|
||||||
{
|
{
|
||||||
@ -42,7 +49,6 @@ namespace osu.Game.Screens.Menu
|
|||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
Icon = FontAwesome.fa_warning,
|
Icon = FontAwesome.fa_warning,
|
||||||
Size = new Vector2(30),
|
Size = new Vector2(30),
|
||||||
RelativePositionAxes = Axes.Both,
|
|
||||||
Y = icon_y,
|
Y = icon_y,
|
||||||
},
|
},
|
||||||
textFlow = new LinkFlowContainer
|
textFlow = new LinkFlowContainer
|
||||||
@ -51,8 +57,9 @@ namespace osu.Game.Screens.Menu
|
|||||||
AutoSizeAxes = Axes.Y,
|
AutoSizeAxes = Axes.Y,
|
||||||
Padding = new MarginPadding(50),
|
Padding = new MarginPadding(50),
|
||||||
TextAnchor = Anchor.TopCentre,
|
TextAnchor = Anchor.TopCentre,
|
||||||
|
Y = -110,
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.TopCentre,
|
||||||
Spacing = new Vector2(0, 2),
|
Spacing = new Vector2(0, 2),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -68,14 +75,37 @@ namespace osu.Game.Screens.Menu
|
|||||||
t.Font = @"Exo2.0-SemiBold";
|
t.Font = @"Exo2.0-SemiBold";
|
||||||
});
|
});
|
||||||
|
|
||||||
textFlow.AddParagraph("Don't expect everything to work perfectly.");
|
textFlow.AddParagraph("Things may not work as expected", t => t.TextSize = 20);
|
||||||
textFlow.AddParagraph("");
|
textFlow.NewParagraph();
|
||||||
textFlow.AddParagraph("Detailed bug reports are welcomed via github issues.");
|
|
||||||
textFlow.AddParagraph("");
|
|
||||||
|
|
||||||
textFlow.AddText("Visit ");
|
Action<SpriteText> format = t =>
|
||||||
textFlow.AddLink("discord.gg/ppy", "https://discord.gg/ppy");
|
{
|
||||||
textFlow.AddText(" if you want to help out or follow progress!");
|
t.TextSize = 15;
|
||||||
|
t.Font = @"Exo2.0-SemiBold";
|
||||||
|
};
|
||||||
|
|
||||||
|
textFlow.AddParagraph("Detailed bug reports are welcomed via github issues.", format);
|
||||||
|
textFlow.NewParagraph();
|
||||||
|
|
||||||
|
textFlow.AddText("Visit ", format);
|
||||||
|
textFlow.AddLink("discord.gg/ppy", "https://discord.gg/ppy", creationParameters:format);
|
||||||
|
textFlow.AddText(" to help out or follow progress!", format);
|
||||||
|
|
||||||
|
textFlow.NewParagraph();
|
||||||
|
textFlow.NewParagraph();
|
||||||
|
textFlow.NewParagraph();
|
||||||
|
|
||||||
|
supporterDrawables.AddRange(textFlow.AddText("Consider becoming an ", format));
|
||||||
|
supporterDrawables.AddRange(textFlow.AddLink("osu!supporter", "https://osu.ppy.sh/home/support", creationParameters: format));
|
||||||
|
supporterDrawables.AddRange(textFlow.AddText(" to help support the game", format));
|
||||||
|
|
||||||
|
supporterDrawables.Add(heart = textFlow.AddIcon(FontAwesome.fa_heart, t =>
|
||||||
|
{
|
||||||
|
t.Padding = new MarginPadding { Left = 5 };
|
||||||
|
t.TextSize = 12;
|
||||||
|
t.Colour = colours.Pink;
|
||||||
|
t.Origin = Anchor.Centre;
|
||||||
|
}).First());
|
||||||
|
|
||||||
iconColour = colours.Yellow;
|
iconColour = colours.Yellow;
|
||||||
}
|
}
|
||||||
@ -90,8 +120,15 @@ namespace osu.Game.Screens.Menu
|
|||||||
{
|
{
|
||||||
base.OnEntering(last);
|
base.OnEntering(last);
|
||||||
|
|
||||||
icon.Delay(1500).FadeColour(iconColour, 200, Easing.OutQuint);
|
icon.Delay(1000).FadeColour(iconColour, 200, Easing.OutQuint);
|
||||||
icon.Delay(1500).MoveToY(icon_y * 1.1f, 100, Easing.OutCirc).Then().MoveToY(icon_y, 100, Easing.InCirc);
|
icon.Delay(1000)
|
||||||
|
.MoveToY(icon_y * 1.1f, 160, Easing.OutCirc)
|
||||||
|
.RotateTo(-10, 160, Easing.OutCirc)
|
||||||
|
.Then()
|
||||||
|
.MoveToY(icon_y, 160, Easing.InCirc)
|
||||||
|
.RotateTo(0, 160, Easing.InCirc);
|
||||||
|
|
||||||
|
supporterDrawables.ForEach(d => d.FadeOut().Delay(2000).FadeIn(500));
|
||||||
|
|
||||||
Content
|
Content
|
||||||
.FadeInFromZero(500)
|
.FadeInFromZero(500)
|
||||||
@ -99,6 +136,8 @@ namespace osu.Game.Screens.Menu
|
|||||||
.FadeOut(250)
|
.FadeOut(250)
|
||||||
.ScaleTo(0.9f, 250, Easing.InQuint)
|
.ScaleTo(0.9f, 250, Easing.InQuint)
|
||||||
.Finally(d => Push(intro));
|
.Finally(d => Push(intro));
|
||||||
|
|
||||||
|
heart.FlashColour(Color4.White, 750, Easing.OutQuint).Loop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user