Extract ObjectCreator.GetLoader for single objects.

This commit is contained in:
Paul Chote
2024-09-28 17:35:26 +01:00
committed by Gustas
parent 014cbc0cbd
commit b60b1e369a

View File

@@ -165,18 +165,21 @@ namespace OpenRA
.SelectMany(ma => ma.GetTypes()); .SelectMany(ma => ma.GetTypes());
} }
public TLoader[] GetLoaders<TLoader>(IEnumerable<string> formats, string name) public TLoader GetLoader<TLoader>(string format, string name)
{
var loaders = new List<TLoader>();
foreach (var format in formats)
{ {
var loader = FindType(format + "Loader"); var loader = FindType(format + "Loader");
if (loader == null || !loader.GetInterfaces().Contains(typeof(TLoader))) if (loader == null || !loader.GetInterfaces().Contains(typeof(TLoader)))
throw new InvalidOperationException($"Unable to find a {name} loader for type '{format}'."); throw new InvalidOperationException($"Unable to find a {name} loader for type '{format}'.");
loaders.Add((TLoader)CreateBasic(loader)); return (TLoader)CreateBasic(loader);
} }
public TLoader[] GetLoaders<TLoader>(IEnumerable<string> formats, string name)
{
var loaders = new List<TLoader>();
foreach (var format in formats)
loaders.Add(GetLoader<TLoader>(format, name));
return loaders.ToArray(); return loaders.ToArray();
} }