// Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; namespace osu.Game.Modes { /// /// Todo: All of this needs to be moved to a RulesetDatabase. /// public static class RulesetCollection { private static readonly ConcurrentDictionary available_rulesets = new ConcurrentDictionary(); public static void Register(Type type) { var ruleset = Activator.CreateInstance(type) as Ruleset; if (ruleset == null) return; available_rulesets.TryAdd(available_rulesets.Count, ruleset); } public static Ruleset GetRuleset(int rulesetId) { Ruleset ruleset; if (!available_rulesets.TryGetValue(rulesetId, out ruleset)) return null; return ruleset; } public static int GetId(Ruleset ruleset) => available_rulesets.First(kvp => kvp.Value == ruleset).Key; public static IEnumerable AllRulesets => available_rulesets.Values; } }