mirror of
https://github.com/ppy/osu.git
synced 2024-12-16 06:52:55 +08:00
Merge branch 'ppy:master' into seekingControlPointFix
This commit is contained in:
commit
b35b16dc10
@ -9,7 +9,7 @@
|
||||
<GenerateProgramFile>false</GenerateProgramFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
@ -9,7 +9,7 @@
|
||||
<GenerateProgramFile>false</GenerateProgramFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
@ -9,7 +9,7 @@
|
||||
<GenerateProgramFile>false</GenerateProgramFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
@ -9,7 +9,7 @@
|
||||
<GenerateProgramFile>false</GenerateProgramFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
@ -7,7 +7,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.13.12" />
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.14.0" />
|
||||
<PackageReference Include="nunit" Version="3.14.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="..\osu.TestProject.props" />
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="..\osu.TestProject.props" />
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="..\osu.TestProject.props" />
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="Moq" Version="4.18.4" />
|
||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||
|
@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="..\osu.TestProject.props" />
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
@ -716,7 +716,7 @@ namespace osu.Game.Tests.Database
|
||||
{
|
||||
foreach (var entry in zip.Entries.ToArray())
|
||||
{
|
||||
if (entry.Key.EndsWith(".osu", StringComparison.InvariantCulture))
|
||||
if (entry.Key!.EndsWith(".osu", StringComparison.InvariantCulture))
|
||||
zip.RemoveEntry(entry);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,98 @@
|
||||
// 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 System.Linq;
|
||||
using NUnit.Framework;
|
||||
using osu.Framework.Graphics;
|
||||
using osu.Framework.Graphics.Sprites;
|
||||
using osu.Framework.Testing;
|
||||
using osu.Game.Beatmaps;
|
||||
using osu.Game.Models;
|
||||
using osu.Game.Rulesets.Osu;
|
||||
using osu.Game.Skinning.Components;
|
||||
using osu.Game.Tests.Beatmaps;
|
||||
|
||||
namespace osu.Game.Tests.Visual.UserInterface
|
||||
{
|
||||
public partial class TestSceneBeatmapAttributeText : OsuTestScene
|
||||
{
|
||||
private readonly BeatmapAttributeText text;
|
||||
|
||||
public TestSceneBeatmapAttributeText()
|
||||
{
|
||||
Child = text = new BeatmapAttributeText
|
||||
{
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre
|
||||
};
|
||||
}
|
||||
|
||||
[SetUp]
|
||||
public void Setup() => Schedule(() =>
|
||||
{
|
||||
Beatmap.Value = CreateWorkingBeatmap(new TestBeatmap(new OsuRuleset().RulesetInfo)
|
||||
{
|
||||
BeatmapInfo =
|
||||
{
|
||||
BPM = 100,
|
||||
DifficultyName = "_Difficulty",
|
||||
Status = BeatmapOnlineStatus.Loved,
|
||||
Metadata =
|
||||
{
|
||||
Title = "_Title",
|
||||
TitleUnicode = "_Title",
|
||||
Artist = "_Artist",
|
||||
ArtistUnicode = "_Artist",
|
||||
Author = new RealmUser { Username = "_Creator" },
|
||||
Source = "_Source",
|
||||
},
|
||||
Difficulty =
|
||||
{
|
||||
CircleSize = 1,
|
||||
DrainRate = 2,
|
||||
OverallDifficulty = 3,
|
||||
ApproachRate = 4,
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
[TestCase(BeatmapAttribute.CircleSize, "Circle Size: 1.00")]
|
||||
[TestCase(BeatmapAttribute.HPDrain, "HP Drain: 2.00")]
|
||||
[TestCase(BeatmapAttribute.Accuracy, "Accuracy: 3.00")]
|
||||
[TestCase(BeatmapAttribute.ApproachRate, "Approach Rate: 4.00")]
|
||||
[TestCase(BeatmapAttribute.Title, "Title: _Title")]
|
||||
[TestCase(BeatmapAttribute.Artist, "Artist: _Artist")]
|
||||
[TestCase(BeatmapAttribute.Creator, "Creator: _Creator")]
|
||||
[TestCase(BeatmapAttribute.DifficultyName, "Difficulty: _Difficulty")]
|
||||
[TestCase(BeatmapAttribute.Source, "Source: _Source")]
|
||||
[TestCase(BeatmapAttribute.RankedStatus, "Beatmap Status: Loved")]
|
||||
public void TestAttributeDisplay(BeatmapAttribute attribute, string expectedText)
|
||||
{
|
||||
AddStep($"set attribute: {attribute}", () => text.Attribute.Value = attribute);
|
||||
AddAssert("check correct text", getText, () => Is.EqualTo(expectedText));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestChangeBeatmap()
|
||||
{
|
||||
AddStep("set title attribute", () => text.Attribute.Value = BeatmapAttribute.Title);
|
||||
AddAssert("check initial title", getText, () => Is.EqualTo("Title: _Title"));
|
||||
|
||||
AddStep("change to beatmap with another title", () => Beatmap.Value = CreateWorkingBeatmap(new TestBeatmap(new OsuRuleset().RulesetInfo)
|
||||
{
|
||||
BeatmapInfo =
|
||||
{
|
||||
Metadata =
|
||||
{
|
||||
Title = "Another"
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
AddAssert("check new title", getText, () => Is.EqualTo("Title: Another"));
|
||||
}
|
||||
|
||||
private string getText() => text.ChildrenOfType<SpriteText>().Single().Text.ToString();
|
||||
}
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="..\osu.TestProject.props" />
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="DeepEqual" Version="4.2.1" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||
<PackageReference Include="Nito.AsyncEx" Version="5.1.2" />
|
||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||
|
@ -4,7 +4,7 @@
|
||||
<StartupObject>osu.Game.Tournament.Tests.TournamentTestRunner</StartupObject>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
@ -62,7 +62,7 @@ namespace osu.Game.Beatmaps
|
||||
}
|
||||
|
||||
[UsedImplicitly]
|
||||
private BeatmapInfo()
|
||||
protected BeatmapInfo()
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,6 @@
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
|
||||
namespace osu.Game.Online.Multiplayer
|
||||
@ -10,13 +9,5 @@ namespace osu.Game.Online.Multiplayer
|
||||
[Serializable]
|
||||
public class InvalidPasswordException : HubException
|
||||
{
|
||||
public InvalidPasswordException()
|
||||
{
|
||||
}
|
||||
|
||||
protected InvalidPasswordException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,6 @@
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
|
||||
namespace osu.Game.Online.Multiplayer
|
||||
@ -14,10 +13,5 @@ namespace osu.Game.Online.Multiplayer
|
||||
: base($"Cannot change from {oldState} to {newState}")
|
||||
{
|
||||
}
|
||||
|
||||
protected InvalidStateChangeException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,6 @@
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
|
||||
namespace osu.Game.Online.Multiplayer
|
||||
@ -14,10 +13,5 @@ namespace osu.Game.Online.Multiplayer
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
|
||||
protected InvalidStateException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,6 @@
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
|
||||
namespace osu.Game.Online.Multiplayer
|
||||
@ -14,10 +13,5 @@ namespace osu.Game.Online.Multiplayer
|
||||
: base("User is attempting to perform a host level operation while not the host")
|
||||
{
|
||||
}
|
||||
|
||||
protected NotHostException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,6 @@
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
|
||||
namespace osu.Game.Online.Multiplayer
|
||||
@ -14,10 +13,5 @@ namespace osu.Game.Online.Multiplayer
|
||||
: base("This user has not yet joined a multiplayer room.")
|
||||
{
|
||||
}
|
||||
|
||||
protected NotJoinedRoomException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,6 @@
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
|
||||
namespace osu.Game.Online.Multiplayer
|
||||
@ -16,10 +15,5 @@ namespace osu.Game.Online.Multiplayer
|
||||
: base(MESSAGE)
|
||||
{
|
||||
}
|
||||
|
||||
protected UserBlockedException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,6 @@
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
|
||||
namespace osu.Game.Online.Multiplayer
|
||||
@ -16,10 +15,5 @@ namespace osu.Game.Online.Multiplayer
|
||||
: base(MESSAGE)
|
||||
{
|
||||
}
|
||||
|
||||
protected UserBlocksPMsException(SerializationInfo info, StreamingContext context)
|
||||
: base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -165,7 +165,7 @@ namespace osu.Game.Scoring
|
||||
}
|
||||
|
||||
[UsedImplicitly] // Realm
|
||||
private ScoreInfo()
|
||||
protected ScoreInfo()
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -3,8 +3,6 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
using JetBrains.Annotations;
|
||||
using osu.Framework.Allocation;
|
||||
using osu.Framework.Bindables;
|
||||
@ -35,25 +33,6 @@ namespace osu.Game.Skinning.Components
|
||||
[Resolved]
|
||||
private IBindable<WorkingBeatmap> beatmap { get; set; } = null!;
|
||||
|
||||
private readonly Dictionary<BeatmapAttribute, LocalisableString> valueDictionary = new Dictionary<BeatmapAttribute, LocalisableString>();
|
||||
|
||||
private static readonly ImmutableDictionary<BeatmapAttribute, LocalisableString> label_dictionary = new Dictionary<BeatmapAttribute, LocalisableString>
|
||||
{
|
||||
[BeatmapAttribute.CircleSize] = BeatmapsetsStrings.ShowStatsCs,
|
||||
[BeatmapAttribute.Accuracy] = BeatmapsetsStrings.ShowStatsAccuracy,
|
||||
[BeatmapAttribute.HPDrain] = BeatmapsetsStrings.ShowStatsDrain,
|
||||
[BeatmapAttribute.ApproachRate] = BeatmapsetsStrings.ShowStatsAr,
|
||||
[BeatmapAttribute.StarRating] = BeatmapsetsStrings.ShowStatsStars,
|
||||
[BeatmapAttribute.Title] = EditorSetupStrings.Title,
|
||||
[BeatmapAttribute.Artist] = EditorSetupStrings.Artist,
|
||||
[BeatmapAttribute.DifficultyName] = EditorSetupStrings.DifficultyHeader,
|
||||
[BeatmapAttribute.Creator] = EditorSetupStrings.Creator,
|
||||
[BeatmapAttribute.Source] = EditorSetupStrings.Source,
|
||||
[BeatmapAttribute.Length] = ArtistStrings.TracklistLength.ToTitle(),
|
||||
[BeatmapAttribute.RankedStatus] = BeatmapDiscussionsStrings.IndexFormBeatmapsetStatusDefault,
|
||||
[BeatmapAttribute.BPM] = BeatmapsetsStrings.ShowStatsBpm,
|
||||
}.ToImmutableDictionary();
|
||||
|
||||
private readonly OsuSpriteText text;
|
||||
|
||||
public BeatmapAttributeText()
|
||||
@ -74,52 +53,135 @@ namespace osu.Game.Skinning.Components
|
||||
{
|
||||
base.LoadComplete();
|
||||
|
||||
Attribute.BindValueChanged(_ => updateLabel());
|
||||
Template.BindValueChanged(_ => updateLabel());
|
||||
beatmap.BindValueChanged(b =>
|
||||
{
|
||||
updateBeatmapContent(b.NewValue);
|
||||
updateLabel();
|
||||
}, true);
|
||||
Attribute.BindValueChanged(_ => updateText());
|
||||
Template.BindValueChanged(_ => updateText());
|
||||
beatmap.BindValueChanged(_ => updateText());
|
||||
|
||||
updateText();
|
||||
}
|
||||
|
||||
private void updateBeatmapContent(WorkingBeatmap workingBeatmap)
|
||||
{
|
||||
valueDictionary[BeatmapAttribute.Title] = new RomanisableString(workingBeatmap.BeatmapInfo.Metadata.TitleUnicode, workingBeatmap.BeatmapInfo.Metadata.Title);
|
||||
valueDictionary[BeatmapAttribute.Artist] = new RomanisableString(workingBeatmap.BeatmapInfo.Metadata.ArtistUnicode, workingBeatmap.BeatmapInfo.Metadata.Artist);
|
||||
valueDictionary[BeatmapAttribute.DifficultyName] = workingBeatmap.BeatmapInfo.DifficultyName;
|
||||
valueDictionary[BeatmapAttribute.Creator] = workingBeatmap.BeatmapInfo.Metadata.Author.Username;
|
||||
valueDictionary[BeatmapAttribute.Source] = workingBeatmap.BeatmapInfo.Metadata.Source;
|
||||
valueDictionary[BeatmapAttribute.Length] = TimeSpan.FromMilliseconds(workingBeatmap.BeatmapInfo.Length).ToFormattedDuration();
|
||||
valueDictionary[BeatmapAttribute.RankedStatus] = workingBeatmap.BeatmapInfo.Status.GetLocalisableDescription();
|
||||
valueDictionary[BeatmapAttribute.BPM] = workingBeatmap.BeatmapInfo.BPM.ToLocalisableString(@"F2");
|
||||
valueDictionary[BeatmapAttribute.CircleSize] = ((double)workingBeatmap.BeatmapInfo.Difficulty.CircleSize).ToLocalisableString(@"F2");
|
||||
valueDictionary[BeatmapAttribute.HPDrain] = ((double)workingBeatmap.BeatmapInfo.Difficulty.DrainRate).ToLocalisableString(@"F2");
|
||||
valueDictionary[BeatmapAttribute.Accuracy] = ((double)workingBeatmap.BeatmapInfo.Difficulty.OverallDifficulty).ToLocalisableString(@"F2");
|
||||
valueDictionary[BeatmapAttribute.ApproachRate] = ((double)workingBeatmap.BeatmapInfo.Difficulty.ApproachRate).ToLocalisableString(@"F2");
|
||||
valueDictionary[BeatmapAttribute.StarRating] = workingBeatmap.BeatmapInfo.StarRating.ToLocalisableString(@"F2");
|
||||
}
|
||||
|
||||
private void updateLabel()
|
||||
private void updateText()
|
||||
{
|
||||
string numberedTemplate = Template.Value
|
||||
.Replace("{", "{{")
|
||||
.Replace("}", "}}")
|
||||
.Replace(@"{{Label}}", "{0}")
|
||||
.Replace(@"{{Value}}", $"{{{1 + (int)Attribute.Value}}}");
|
||||
.Replace(@"{{Value}}", "{1}");
|
||||
|
||||
object?[] args = valueDictionary.OrderBy(pair => pair.Key)
|
||||
.Select(pair => pair.Value)
|
||||
.Prepend(label_dictionary[Attribute.Value])
|
||||
.Cast<object?>()
|
||||
.ToArray();
|
||||
List<object?> values = new List<object?>
|
||||
{
|
||||
getLabelString(Attribute.Value),
|
||||
getValueString(Attribute.Value)
|
||||
};
|
||||
|
||||
foreach (var type in Enum.GetValues<BeatmapAttribute>())
|
||||
{
|
||||
numberedTemplate = numberedTemplate.Replace($"{{{{{type}}}}}", $"{{{1 + (int)type}}}");
|
||||
string replaced = numberedTemplate.Replace($@"{{{{{type}}}}}", $@"{{{values.Count}}}");
|
||||
|
||||
if (numberedTemplate != replaced)
|
||||
{
|
||||
numberedTemplate = replaced;
|
||||
values.Add(getValueString(type));
|
||||
}
|
||||
}
|
||||
|
||||
text.Text = LocalisableString.Format(numberedTemplate, args);
|
||||
text.Text = LocalisableString.Format(numberedTemplate, values.ToArray());
|
||||
}
|
||||
|
||||
private LocalisableString getLabelString(BeatmapAttribute attribute)
|
||||
{
|
||||
switch (attribute)
|
||||
{
|
||||
case BeatmapAttribute.CircleSize:
|
||||
return BeatmapsetsStrings.ShowStatsCs;
|
||||
|
||||
case BeatmapAttribute.Accuracy:
|
||||
return BeatmapsetsStrings.ShowStatsAccuracy;
|
||||
|
||||
case BeatmapAttribute.HPDrain:
|
||||
return BeatmapsetsStrings.ShowStatsDrain;
|
||||
|
||||
case BeatmapAttribute.ApproachRate:
|
||||
return BeatmapsetsStrings.ShowStatsAr;
|
||||
|
||||
case BeatmapAttribute.StarRating:
|
||||
return BeatmapsetsStrings.ShowStatsStars;
|
||||
|
||||
case BeatmapAttribute.Title:
|
||||
return EditorSetupStrings.Title;
|
||||
|
||||
case BeatmapAttribute.Artist:
|
||||
return EditorSetupStrings.Artist;
|
||||
|
||||
case BeatmapAttribute.DifficultyName:
|
||||
return EditorSetupStrings.DifficultyHeader;
|
||||
|
||||
case BeatmapAttribute.Creator:
|
||||
return EditorSetupStrings.Creator;
|
||||
|
||||
case BeatmapAttribute.Source:
|
||||
return EditorSetupStrings.Source;
|
||||
|
||||
case BeatmapAttribute.Length:
|
||||
return ArtistStrings.TracklistLength.ToTitle();
|
||||
|
||||
case BeatmapAttribute.RankedStatus:
|
||||
return BeatmapDiscussionsStrings.IndexFormBeatmapsetStatusDefault;
|
||||
|
||||
case BeatmapAttribute.BPM:
|
||||
return BeatmapsetsStrings.ShowStatsBpm;
|
||||
|
||||
default:
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
private LocalisableString getValueString(BeatmapAttribute attribute)
|
||||
{
|
||||
switch (attribute)
|
||||
{
|
||||
case BeatmapAttribute.Title:
|
||||
return new RomanisableString(beatmap.Value.BeatmapInfo.Metadata.TitleUnicode, beatmap.Value.BeatmapInfo.Metadata.Title);
|
||||
|
||||
case BeatmapAttribute.Artist:
|
||||
return new RomanisableString(beatmap.Value.BeatmapInfo.Metadata.ArtistUnicode, beatmap.Value.BeatmapInfo.Metadata.Artist);
|
||||
|
||||
case BeatmapAttribute.DifficultyName:
|
||||
return beatmap.Value.BeatmapInfo.DifficultyName;
|
||||
|
||||
case BeatmapAttribute.Creator:
|
||||
return beatmap.Value.BeatmapInfo.Metadata.Author.Username;
|
||||
|
||||
case BeatmapAttribute.Source:
|
||||
return beatmap.Value.BeatmapInfo.Metadata.Source;
|
||||
|
||||
case BeatmapAttribute.Length:
|
||||
return TimeSpan.FromMilliseconds(beatmap.Value.BeatmapInfo.Length).ToFormattedDuration();
|
||||
|
||||
case BeatmapAttribute.RankedStatus:
|
||||
return beatmap.Value.BeatmapInfo.Status.GetLocalisableDescription();
|
||||
|
||||
case BeatmapAttribute.BPM:
|
||||
return beatmap.Value.BeatmapInfo.BPM.ToLocalisableString(@"F2");
|
||||
|
||||
case BeatmapAttribute.CircleSize:
|
||||
return ((double)beatmap.Value.BeatmapInfo.Difficulty.CircleSize).ToLocalisableString(@"F2");
|
||||
|
||||
case BeatmapAttribute.HPDrain:
|
||||
return ((double)beatmap.Value.BeatmapInfo.Difficulty.DrainRate).ToLocalisableString(@"F2");
|
||||
|
||||
case BeatmapAttribute.Accuracy:
|
||||
return ((double)beatmap.Value.BeatmapInfo.Difficulty.OverallDifficulty).ToLocalisableString(@"F2");
|
||||
|
||||
case BeatmapAttribute.ApproachRate:
|
||||
return ((double)beatmap.Value.BeatmapInfo.Difficulty.ApproachRate).ToLocalisableString(@"F2");
|
||||
|
||||
case BeatmapAttribute.StarRating:
|
||||
return beatmap.Value.BeatmapInfo.StarRating.ToLocalisableString(@"F2");
|
||||
|
||||
default:
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void SetFont(FontUsage font) => text.Font = font.With(size: 40);
|
||||
|
@ -18,16 +18,16 @@
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="AutoMapper" Version="12.0.1" />
|
||||
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
||||
<PackageReference Include="DiffPlex" Version="1.7.2" />
|
||||
<PackageReference Include="HtmlAgilityPack" Version="1.11.59" />
|
||||
<PackageReference Include="HtmlAgilityPack" Version="1.11.67" />
|
||||
<PackageReference Include="Humanizer" Version="2.14.1" />
|
||||
<PackageReference Include="MessagePack" Version="2.5.140" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="7.0.15" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="7.0.15" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="7.0.15" />
|
||||
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="7.0.12" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="7.0.0" />
|
||||
<PackageReference Include="MessagePack" Version="2.5.187" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="8.0.10" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="8.0.10" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="8.0.10" />
|
||||
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="8.0.10" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Toolkit.HighPerformance" Version="7.1.2" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="ppy.LocalisationAnalyser" Version="2024.802.0">
|
||||
@ -37,11 +37,11 @@
|
||||
<PackageReference Include="Realm" Version="11.5.0" />
|
||||
<PackageReference Include="ppy.osu.Framework" Version="2024.1009.0" />
|
||||
<PackageReference Include="ppy.osu.Game.Resources" Version="2024.1003.0" />
|
||||
<PackageReference Include="Sentry" Version="4.3.0" />
|
||||
<PackageReference Include="Sentry" Version="4.12.1" />
|
||||
<!-- Held back due to 0.34.0 failing AOT compilation on ZstdSharp.dll dependency. -->
|
||||
<PackageReference Include="SharpCompress" Version="0.36.0" />
|
||||
<PackageReference Include="SharpCompress" Version="0.38.0" />
|
||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.1.8" />
|
||||
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.1.10" />
|
||||
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
||||
<PackageReference Include="TagLibSharp" Version="2.3.0" />
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user