diff --git a/OpenRA.Game/ModData.cs b/OpenRA.Game/ModData.cs index 98a19f3f88..4b5e3c6a6d 100644 --- a/OpenRA.Game/ModData.cs +++ b/OpenRA.Game/ModData.cs @@ -68,8 +68,8 @@ namespace OpenRA WidgetLoader = new WidgetLoader(this); MapCache = new MapCache(this); - SoundLoaders = GetLoaders(Manifest.SoundFormats, "sound"); - SpriteLoaders = GetLoaders(Manifest.SpriteFormats, "sprite"); + SoundLoaders = ObjectCreator.GetLoaders(Manifest.SoundFormats, "sound"); + SpriteLoaders = ObjectCreator.GetLoaders(Manifest.SpriteFormats, "sprite"); var sequenceFormat = Manifest.Get(); var sequenceLoader = ObjectCreator.FindType(sequenceFormat.Type + "Loader"); @@ -129,21 +129,6 @@ namespace OpenRA CursorProvider = new CursorProvider(this); } - TLoader[] GetLoaders(IEnumerable formats, string name) - { - var loaders = new List(); - foreach (var format in formats) - { - var loader = ObjectCreator.FindType(format + "Loader"); - if (loader == null || !loader.GetInterfaces().Contains(typeof(TLoader))) - throw new InvalidOperationException("Unable to find a {0} loader for type '{1}'.".F(name, format)); - - loaders.Add((TLoader)ObjectCreator.CreateBasic(loader)); - } - - return loaders.ToArray(); - } - public IEnumerable Languages { get; private set; } void LoadTranslations(Map map) diff --git a/OpenRA.Game/ObjectCreator.cs b/OpenRA.Game/ObjectCreator.cs index afb8f32f17..e4cc1072af 100644 --- a/OpenRA.Game/ObjectCreator.cs +++ b/OpenRA.Game/ObjectCreator.cs @@ -154,6 +154,21 @@ namespace OpenRA .SelectMany(ma => ma.GetTypes()); } + public TLoader[] GetLoaders(IEnumerable formats, string name) + { + var loaders = new List(); + foreach (var format in formats) + { + var loader = FindType(format + "Loader"); + if (loader == null || !loader.GetInterfaces().Contains(typeof(TLoader))) + throw new InvalidOperationException("Unable to find a {0} loader for type '{1}'.".F(name, format)); + + loaders.Add((TLoader)CreateBasic(loader)); + } + + return loaders.ToArray(); + } + ~ObjectCreator() { Dispose(false);