Support ingame mod switching.

This commit is contained in:
Paul Chote
2011-01-21 09:43:56 +13:00
parent d32e2be941
commit f44903b50f
2 changed files with 8 additions and 6 deletions

View File

@@ -23,9 +23,6 @@ namespace OpenRA.FileFormats
public ActorReference( string type, Dictionary<string, MiniYaml> inits ) public ActorReference( string type, Dictionary<string, MiniYaml> inits )
{ {
if (Rules.Info != null && !Rules.Info.ContainsKey(type))
throw new InvalidDataException("Unknown actor: `{0}'".F(type));
Type = type; Type = type;
InitDict = new TypeDictionary(); InitDict = new TypeDictionary();
foreach( var i in inits ) foreach( var i in inits )

View File

@@ -246,11 +246,16 @@ namespace OpenRA
foreach(var mod in Mod.AllMods) foreach(var mod in Mod.AllMods)
Console.WriteLine("\t{0}: {1} ({2})", mod.Key, mod.Value.Title, mod.Value.Version); Console.WriteLine("\t{0}: {1} ({2})", mod.Key, mod.Value.Title, mod.Value.Version);
InitializeWithMods(Settings.Game.Mods);
}
public static void InitializeWithMods(string[] mods)
{
// Discard any invalid mods // Discard any invalid mods
var mods = Settings.Game.Mods.Where( m => Mod.AllMods.ContainsKey( m ) ).ToArray(); var mm = mods.Where( m => Mod.AllMods.ContainsKey( m ) ).ToArray();
Console.WriteLine("Loading mods: {0}",string.Join(",",mods)); Console.WriteLine("Loading mods: {0}",string.Join(",",mm));
modData = new ModData( mods ); modData = new ModData( mm );
modData.LoadInitialAssets(); modData.LoadInitialAssets();
Sound.Initialize(); Sound.Initialize();