Remove LegacyID from Ruleset

This commit is contained in:
Dean Herbert
2019-12-24 13:48:27 +09:00
parent 5e8afccfee
commit a324bfbc2c
7 changed files with 30 additions and 18 deletions

View File

@ -59,16 +59,21 @@ namespace osu.Game.Rulesets
var instances = loadedAssemblies.Values.Select(r => (Ruleset)Activator.CreateInstance(r)).ToList();
//add all legacy modes in correct order
foreach (var r in instances.Where(r => r.LegacyID != null).OrderBy(r => r.LegacyID))
foreach (var r in instances.Where(r => r is ILegacyRuleset))
{
if (context.RulesetInfo.SingleOrDefault(rsi => rsi.ID == r.RulesetInfo.ID) == null)
int legacyId = ((ILegacyRuleset)r).LegacyID;
if (context.RulesetInfo.SingleOrDefault(rsi => rsi.ID == legacyId) == null)
{
r.RulesetInfo.ID = legacyId;
context.RulesetInfo.Add(r.RulesetInfo);
}
}
context.SaveChanges();
//add any other modes
foreach (var r in instances.Where(r => r.LegacyID == null))
foreach (var r in instances.Where(r => !(r is ILegacyRuleset)))
{
if (context.RulesetInfo.FirstOrDefault(ri => ri.InstantiationInfo == r.RulesetInfo.InstantiationInfo) == null)
context.RulesetInfo.Add(r.RulesetInfo);