Better default values + don't set Mode from outside.

This commit is contained in:
smoogipooo 2017-04-15 06:14:31 +09:00
parent 0333e1a050
commit 4a149c4ab8
6 changed files with 20 additions and 10 deletions

View File

@ -8,6 +8,7 @@
using osu.Game.Database;
using osu.Game.Screens.Select;
using osu.Game.Screens.Select.Filter;
using osu.Game.Modes;
namespace osu.Desktop.VisualTests.Tests
{
@ -71,7 +72,7 @@ private BeatmapSetInfo createTestBeatmapSet(int i)
new BeatmapInfo
{
OnlineBeatmapID = 1234 + i,
Mode = 0,
Ruleset = RulesetCollection.GetRuleset(0),
Path = "normal.osu",
Version = "Normal",
Difficulty = new BeatmapDifficulty
@ -82,7 +83,7 @@ private BeatmapSetInfo createTestBeatmapSet(int i)
new BeatmapInfo
{
OnlineBeatmapID = 1235 + i,
Mode = 0,
Ruleset = RulesetCollection.GetRuleset(0),
Path = "hard.osu",
Version = "Hard",
Difficulty = new BeatmapDifficulty
@ -93,7 +94,7 @@ private BeatmapSetInfo createTestBeatmapSet(int i)
new BeatmapInfo
{
OnlineBeatmapID = 1236 + i,
Mode = 0,
Ruleset = RulesetCollection.GetRuleset(0),
Path = "insane.osu",
Version = "Insane",
Difficulty = new BeatmapDifficulty

View File

@ -56,7 +56,13 @@ public class BeatmapInfo : IEquatable<BeatmapInfo>, IJsonSerializable
public bool SpecialStyle { get; set; }
public int Mode { get; set; }
public Ruleset Ruleset => RulesetCollection.GetRuleset(Mode);
[Ignore]
public Ruleset Ruleset
{
get { return RulesetCollection.GetRuleset(Mode); }
set { Mode = RulesetCollection.GetId(value); }
}
public bool LetterboxInBreaks { get; set; }
public bool WidescreenStoryboard { get; set; }

View File

@ -8,13 +8,16 @@
namespace osu.Game.Modes
{
/// <summary>
/// Todo: All of this needs to be moved to a RulesetDatabase.
/// </summary>
public static class RulesetCollection
{
private static readonly ConcurrentDictionary<int, Ruleset> available_rulesets = new ConcurrentDictionary<int, Ruleset>();
public static void Register(Type type)
{
Ruleset ruleset = Activator.CreateInstance(type) as Ruleset;
var ruleset = Activator.CreateInstance(type) as Ruleset;
if (ruleset == null)
return;
@ -25,9 +28,9 @@ public static void Register(Type type)
public static Ruleset GetRuleset(int rulesetId)
{
Ruleset ruleset;
if (!available_rulesets.TryGetValue(rulesetId, out ruleset))
throw new InvalidOperationException($"Ruleset id {rulesetId} doesn't exist. How did you trigger this?");
return null;
return ruleset;
}

View File

@ -37,7 +37,7 @@ public class ModSelectOverlay : WaveOverlayContainer
public readonly Bindable<IEnumerable<Mod>> SelectedMods = new Bindable<IEnumerable<Mod>>();
public readonly Bindable<Ruleset> Ruleset = new Bindable<Ruleset>();
public readonly Bindable<Ruleset> Ruleset = new Bindable<Ruleset>(RulesetCollection.GetRuleset(0));
private void rulesetChanged(Ruleset newRuleset)
{

View File

@ -163,7 +163,7 @@ public void Activate()
searchTextBox.HoldFocus = true;
}
private readonly Bindable<Ruleset> ruleset = new Bindable<Ruleset>();
private readonly Bindable<Ruleset> ruleset = new Bindable<Ruleset>(RulesetCollection.GetRuleset(0));
[BackgroundDependencyLoader(permitNulls:true)]
private void load(OsuColour colours, OsuGame osu)

View File

@ -29,7 +29,7 @@ namespace osu.Game.Screens.Select
{
public abstract class SongSelect : OsuScreen
{
private readonly Bindable<Ruleset> ruleset = new Bindable<Ruleset>();
private readonly Bindable<Ruleset> ruleset = new Bindable<Ruleset>(RulesetCollection.GetRuleset(0));
private BeatmapDatabase database;
protected override BackgroundScreen CreateBackground() => new BackgroundScreenBeatmap(Beatmap);