Use reflection to load Rulesets.

This commit is contained in:
Dean Herbert
2016-11-14 19:20:27 +09:00
parent 6c7fab0e31
commit 07fee61989

View File

@ -4,6 +4,10 @@
using System.Collections.Generic; using System.Collections.Generic;
using osu.Game.Modes.Objects; using osu.Game.Modes.Objects;
using osu.Game.Modes.UI; using osu.Game.Modes.UI;
using System.Reflection;
using osu.Framework.Extensions;
using System;
using System.Linq;
namespace osu.Game.Modes namespace osu.Game.Modes
{ {
@ -15,19 +19,16 @@ namespace osu.Game.Modes
public static Ruleset GetRuleset(PlayMode mode) public static Ruleset GetRuleset(PlayMode mode)
{ {
switch (mode) Type type = AppDomain.CurrentDomain.GetAssemblies()
{ .Where(a => a.FullName.Contains($@"osu.Game.Modes.{mode}"))
default: .SelectMany(a => a.GetTypes())
return null; .Where(t => t.Name == $@"{mode}Ruleset")
.FirstOrDefault();
// return new OsuRuleset(); if (type == null)
//case PlayMode.Catch: return null;
// return new CatchRuleset();
//case PlayMode.Mania: return Activator.CreateInstance(type) as Ruleset;
// return new ManiaRuleset();
//case PlayMode.Taiko:
// return new TaikoRuleset();
}
} }
} }
} }