clean that up...
This commit is contained in:
@@ -56,7 +56,7 @@ namespace OpenRA
|
||||
static bool changePending;
|
||||
public static Pair<Assembly, string>[] ModAssemblies;
|
||||
|
||||
public static void LoadModPackages(Manifest manifest)
|
||||
static void LoadModPackages(Manifest manifest)
|
||||
{
|
||||
FileSystem.UnmountAll();
|
||||
Timer.Time("reset: {0}");
|
||||
@@ -67,7 +67,7 @@ namespace OpenRA
|
||||
Timer.Time("mount temporary packages: {0}");
|
||||
}
|
||||
|
||||
internal static void LoadModAssemblies(Manifest m)
|
||||
static void LoadModAssemblies(Manifest m)
|
||||
{
|
||||
// All the core namespaces
|
||||
var asms = typeof(Game).Assembly.GetNamespaces()
|
||||
@@ -97,6 +97,19 @@ namespace OpenRA
|
||||
ModAssemblies = asms.ToArray();
|
||||
}
|
||||
|
||||
public static T CreateObject<T>(string classname)
|
||||
{
|
||||
foreach (var mod in ModAssemblies)
|
||||
{
|
||||
var fullTypeName = mod.Second + "." + classname;
|
||||
var obj = mod.First.CreateInstance(fullTypeName);
|
||||
if (obj != null)
|
||||
return (T)obj;
|
||||
}
|
||||
|
||||
throw new InvalidOperationException("Cannot locate type: {0}".F(classname));
|
||||
}
|
||||
|
||||
public static void ChangeMap(string mapName)
|
||||
{
|
||||
Timer.Time( "----ChangeMap" );
|
||||
|
||||
@@ -71,16 +71,9 @@ namespace OpenRA.GameRules
|
||||
|
||||
static ITraitInfo LoadTraitInfo(string traitName, MiniYaml my)
|
||||
{
|
||||
foreach (var mod in Game.ModAssemblies)
|
||||
{
|
||||
var fullTypeName = mod.Second + "." + traitName + "Info";
|
||||
var info = (ITraitInfo)mod.First.CreateInstance(fullTypeName);
|
||||
if (info == null) continue;
|
||||
FieldLoader.Load(info, my);
|
||||
return info;
|
||||
}
|
||||
|
||||
throw new InvalidOperationException("Cannot locate trait: {0}".F(traitName));
|
||||
var info = Game.CreateObject<ITraitInfo>(traitName + "Info");
|
||||
FieldLoader.Load(info, my);
|
||||
return info;
|
||||
}
|
||||
|
||||
public IEnumerable<ITraitInfo> TraitsInConstructOrder()
|
||||
|
||||
Reference in New Issue
Block a user