move calls to manifest ctor into ModData

This commit is contained in:
Bob
2010-08-21 18:26:16 +12:00
parent 9eaa0e5765
commit 7e67a5bb2d
3 changed files with 23 additions and 31 deletions

View File

@@ -32,10 +32,9 @@ namespace OpenRA.Editor
Text = "OpenRA Editor (mod:{0})".F(currentMod); Text = "OpenRA Editor (mod:{0})".F(currentMod);
var manifest = new Manifest(new[] { currentMod }); Game.modData = new ModData( currentMod );
Game.modData = new ModData( manifest );
Rules.LoadRules(manifest, new Map()); Rules.LoadRules(Game.modData.Manifest, new Map());
folderBrowser.SelectedPath = new string[] { Environment.CurrentDirectory, "mods", currentMod, "maps" } folderBrowser.SelectedPath = new string[] { Environment.CurrentDirectory, "mods", currentMod, "maps" }
.Aggregate(Path.Combine); .Aggregate(Path.Combine);
@@ -58,8 +57,7 @@ namespace OpenRA.Editor
loadedMapName = mapname; loadedMapName = mapname;
var manifest = new Manifest(new[] { currentMod }); Game.modData = new ModData( currentMod );
Game.modData = new ModData( manifest );
// load the map // load the map
var map = new Map(new Folder(mapname)); var map = new Map(new Folder(mapname));
@@ -70,7 +68,7 @@ namespace OpenRA.Editor
map.Players.Add("Neutral", new PlayerReference("Neutral", map.Players.Add("Neutral", new PlayerReference("Neutral",
Rules.Info["world"].Traits.WithInterface<CountryInfo>().First().Race, true, true)); Rules.Info["world"].Traits.WithInterface<CountryInfo>().First().Race, true, true));
PrepareMapResources(manifest, map); PrepareMapResources(Game.modData.Manifest, map);
dirty = false; dirty = false;
} }
@@ -83,10 +81,9 @@ namespace OpenRA.Editor
loadedMapName = null; loadedMapName = null;
var manifest = new Manifest(new[] { currentMod }); Game.modData = new ModData( currentMod );
Game.modData = new ModData( manifest );
PrepareMapResources(manifest, map); PrepareMapResources(Game.modData.Manifest, map);
MakeDirty(); MakeDirty();
} }

View File

@@ -66,19 +66,17 @@ namespace OpenRA
static void ChangeMods() static void ChangeMods()
{ {
Timer.Time( "----ChangeMods" ); Timer.Time( "----ChangeMods" );
var manifest = new Manifest(LobbyInfo.GlobalSettings.Mods); modData = new ModData( LobbyInfo.GlobalSettings.Mods );
Timer.Time("manifest: {0}");
modData = new ModData( manifest ); ChromeProvider.Initialize( modData.Manifest.Chrome );
Timer.Time("load assemblies, packages: {0}");
ChromeProvider.Initialize(manifest.Chrome);
packageChangePending = false; packageChangePending = false;
Timer.Time( "load assemblies, packages: {0}" );
} }
static void LoadMap(string mapName) static void LoadMap(string mapName)
{ {
Timer.Time("----LoadMap"); Timer.Time("----LoadMap");
var manifest = new Manifest(LobbyInfo.GlobalSettings.Mods); modData = new ModData( LobbyInfo.GlobalSettings.Mods );
modData = new ModData( manifest );
Timer.Time("manifest: {0}"); Timer.Time("manifest: {0}");
if (!Game.AvailableMaps.ContainsKey(mapName)) if (!Game.AvailableMaps.ContainsKey(mapName))
@@ -90,14 +88,14 @@ namespace OpenRA
world = null; // trying to access the old world will NRE, rather than silently doing it wrong. world = null; // trying to access the old world will NRE, rather than silently doing it wrong.
Timer.Time("viewport: {0}"); Timer.Time("viewport: {0}");
Rules.LoadRules(manifest,map); Rules.LoadRules(modData.Manifest,map);
Timer.Time( "load rules: {0}" ); Timer.Time( "load rules: {0}" );
SpriteSheetBuilder.Initialize( Rules.TileSets[map.Tileset] ); SpriteSheetBuilder.Initialize( Rules.TileSets[map.Tileset] );
SequenceProvider.Initialize(manifest.Sequences); SequenceProvider.Initialize(modData.Manifest.Sequences);
Timer.Time("SeqProv: {0}"); Timer.Time("SeqProv: {0}");
world = new World(manifest, map); world = new World(modData.Manifest, map);
Timer.Time("world: {0}"); Timer.Time("world: {0}");
Timer.Time("----end LoadMap"); Timer.Time("----end LoadMap");
@@ -394,8 +392,7 @@ namespace OpenRA
Log.AddChannel("sync", "syncreport.log"); Log.AddChannel("sync", "syncreport.log");
LobbyInfo.GlobalSettings.Mods = Settings.InitialMods; LobbyInfo.GlobalSettings.Mods = Settings.InitialMods;
var manifest = new Manifest(LobbyInfo.GlobalSettings.Mods); modData = new ModData( LobbyInfo.GlobalSettings.Mods );
modData = new ModData( manifest );
Renderer.SheetSize = Settings.SheetSize; Renderer.SheetSize = Settings.SheetSize;
@@ -418,7 +415,7 @@ namespace OpenRA
else else
JoinLocal(); JoinLocal();
StartGame(manifest.ShellmapUid); StartGame(modData.Manifest.ShellmapUid);
ResetTimer(); ResetTimer();
@@ -477,10 +474,8 @@ namespace OpenRA
public static void InitializeEngineWithMods(string[] mods) public static void InitializeEngineWithMods(string[] mods)
{ {
AppDomain.CurrentDomain.AssemblyResolve += FileSystem.ResolveAssembly; AppDomain.CurrentDomain.AssemblyResolve += FileSystem.ResolveAssembly;
var manifest = new Manifest(mods); modData = new ModData( mods );
modData = new ModData( manifest ); Rules.LoadRules(modData.Manifest, new Map());
Rules.LoadRules(manifest, new Map());
} }
public static T CreateObject<T>( string name ) public static T CreateObject<T>( string name )

View File

@@ -14,11 +14,11 @@ namespace OpenRA
public readonly SheetBuilder SheetBuilder; public readonly SheetBuilder SheetBuilder;
public readonly CursorSheetBuilder CursorSheetBuilder; public readonly CursorSheetBuilder CursorSheetBuilder;
public ModData( Manifest manifest ) public ModData( params string[] mods )
{ {
Manifest = manifest; Manifest = new Manifest( mods );
ObjectCreator = new ObjectCreator( manifest ); ObjectCreator = new ObjectCreator( Manifest );
FileSystem.LoadFromManifest( manifest ); FileSystem.LoadFromManifest( Manifest );
SheetBuilder = new SheetBuilder( TextureChannel.Red ); SheetBuilder = new SheetBuilder( TextureChannel.Red );
CursorSheetBuilder = new CursorSheetBuilder( this ); CursorSheetBuilder = new CursorSheetBuilder( this );
} }