Move GetLoaders to ObjectCreator.
This commit is contained in:
@@ -68,8 +68,8 @@ namespace OpenRA
|
|||||||
WidgetLoader = new WidgetLoader(this);
|
WidgetLoader = new WidgetLoader(this);
|
||||||
MapCache = new MapCache(this);
|
MapCache = new MapCache(this);
|
||||||
|
|
||||||
SoundLoaders = GetLoaders<ISoundLoader>(Manifest.SoundFormats, "sound");
|
SoundLoaders = ObjectCreator.GetLoaders<ISoundLoader>(Manifest.SoundFormats, "sound");
|
||||||
SpriteLoaders = GetLoaders<ISpriteLoader>(Manifest.SpriteFormats, "sprite");
|
SpriteLoaders = ObjectCreator.GetLoaders<ISpriteLoader>(Manifest.SpriteFormats, "sprite");
|
||||||
|
|
||||||
var sequenceFormat = Manifest.Get<SpriteSequenceFormat>();
|
var sequenceFormat = Manifest.Get<SpriteSequenceFormat>();
|
||||||
var sequenceLoader = ObjectCreator.FindType(sequenceFormat.Type + "Loader");
|
var sequenceLoader = ObjectCreator.FindType(sequenceFormat.Type + "Loader");
|
||||||
@@ -129,21 +129,6 @@ namespace OpenRA
|
|||||||
CursorProvider = new CursorProvider(this);
|
CursorProvider = new CursorProvider(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
TLoader[] GetLoaders<TLoader>(IEnumerable<string> formats, string name)
|
|
||||||
{
|
|
||||||
var loaders = new List<TLoader>();
|
|
||||||
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<string> Languages { get; private set; }
|
public IEnumerable<string> Languages { get; private set; }
|
||||||
|
|
||||||
void LoadTranslations(Map map)
|
void LoadTranslations(Map map)
|
||||||
|
|||||||
@@ -154,6 +154,21 @@ namespace OpenRA
|
|||||||
.SelectMany(ma => ma.GetTypes());
|
.SelectMany(ma => ma.GetTypes());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TLoader[] GetLoaders<TLoader>(IEnumerable<string> formats, string name)
|
||||||
|
{
|
||||||
|
var loaders = new List<TLoader>();
|
||||||
|
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()
|
~ObjectCreator()
|
||||||
{
|
{
|
||||||
Dispose(false);
|
Dispose(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user