removing duplication wrt mounting FS packages

This commit is contained in:
Bob
2010-08-21 17:27:54 +12:00
parent 15bd58ddce
commit 38ffd30b28
5 changed files with 16 additions and 36 deletions

View File

@@ -17,10 +17,8 @@ namespace FileExtractor
} }
var mods = args[0].Split(','); var mods = args[0].Split(',');
var manifest = new Manifest(mods); var manifest = new Manifest(mods);
FileSystem.LoadFromManifest( manifest );
foreach (var folder in manifest.Folders) FileSystem.Mount(folder);
foreach (var pkg in manifest.Packages) FileSystem.Mount(pkg);
try try
{ {

View File

@@ -34,10 +34,7 @@ namespace OpenRA.Editor
var manifest = new Manifest(new[] { currentMod }); var manifest = new Manifest(new[] { currentMod });
Game.modData = new ModData( manifest ); Game.modData = new ModData( manifest );
FileSystem.LoadFromManifest( manifest );
FileSystem.UnmountAll();
foreach (var folder in manifest.Folders) FileSystem.Mount(folder);
foreach (var pkg in manifest.Packages) FileSystem.Mount(pkg);
Rules.LoadRules(manifest, new Map()); Rules.LoadRules(manifest, new Map());
@@ -64,10 +61,7 @@ namespace OpenRA.Editor
var manifest = new Manifest(new[] { currentMod }); var manifest = new Manifest(new[] { currentMod });
Game.modData = new ModData( manifest ); Game.modData = new ModData( manifest );
FileSystem.LoadFromManifest( manifest );
FileSystem.UnmountAll();
foreach (var folder in manifest.Folders) FileSystem.Mount(folder);
foreach (var pkg in manifest.Packages) FileSystem.Mount(pkg);
// load the map // load the map
var map = new Map(new Folder(mapname)); var map = new Map(new Folder(mapname));
@@ -93,10 +87,7 @@ namespace OpenRA.Editor
var manifest = new Manifest(new[] { currentMod }); var manifest = new Manifest(new[] { currentMod });
Game.modData = new ModData( manifest ); Game.modData = new ModData( manifest );
FileSystem.LoadFromManifest( manifest );
FileSystem.UnmountAll();
foreach (var folder in manifest.Folders) FileSystem.Mount(folder);
foreach (var pkg in manifest.Packages) FileSystem.Mount(pkg);
PrepareMapResources(manifest, map); PrepareMapResources(manifest, map);

View File

@@ -64,6 +64,13 @@ namespace OpenRA.FileFormats
allFiles = new Cache<uint, List<IFolder>>( _ => new List<IFolder>() ); allFiles = new Cache<uint, List<IFolder>>( _ => new List<IFolder>() );
} }
public static void LoadFromManifest( Manifest manifest )
{
UnmountAll();
foreach (var dir in manifest.Folders) Mount(dir);
foreach (var pkg in manifest.Packages) Mount(pkg);
}
static Stream GetFromCache( Cache<uint, List<IFolder>> index, string filename ) static Stream GetFromCache( Cache<uint, List<IFolder>> index, string filename )
{ {
foreach( var folder in index[ PackageEntry.HashFilename( filename ) ] ) foreach( var folder in index[ PackageEntry.HashFilename( filename ) ] )

View File

@@ -51,17 +51,6 @@ namespace OpenRA
static bool packageChangePending; static bool packageChangePending;
static bool mapChangePending; static bool mapChangePending;
static void LoadModPackages( Manifest manifest )
{
FileSystem.UnmountAll();
Timer.Time("reset: {0}");
foreach (var dir in manifest.Folders) FileSystem.Mount(dir);
foreach (var pkg in manifest.Packages) FileSystem.Mount(pkg);
Timer.Time("mount temporary packages: {0}");
}
public static Dictionary<string, MapStub> AvailableMaps; public static Dictionary<string, MapStub> AvailableMaps;
// TODO: Do this nicer // TODO: Do this nicer
@@ -81,7 +70,7 @@ namespace OpenRA
Timer.Time("manifest: {0}"); Timer.Time("manifest: {0}");
modData = new ModData( manifest ); modData = new ModData( manifest );
SheetBuilder.Initialize(); SheetBuilder.Initialize();
LoadModPackages( manifest ); FileSystem.LoadFromManifest( manifest );
Timer.Time("load assemblies, packages: {0}"); Timer.Time("load assemblies, packages: {0}");
ChromeProvider.Initialize(manifest.Chrome); ChromeProvider.Initialize(manifest.Chrome);
packageChangePending = false; packageChangePending = false;
@@ -464,7 +453,7 @@ namespace OpenRA
modData = new ModData( manifest ); modData = new ModData( manifest );
// Load the default mod to access required files // Load the default mod to access required files
LoadModPackages( manifest ); FileSystem.LoadFromManifest( manifest );
Renderer.SheetSize = Settings.SheetSize; Renderer.SheetSize = Settings.SheetSize;
@@ -548,10 +537,7 @@ namespace OpenRA
AppDomain.CurrentDomain.AssemblyResolve += FileSystem.ResolveAssembly; AppDomain.CurrentDomain.AssemblyResolve += FileSystem.ResolveAssembly;
var manifest = new Manifest(mods); var manifest = new Manifest(mods);
modData = new ModData( manifest ); modData = new ModData( manifest );
FileSystem.LoadFromManifest( manifest );
FileSystem.UnmountAll();
foreach (var folder in manifest.Folders) FileSystem.Mount(folder);
foreach (var pkg in manifest.Packages) FileSystem.Mount(pkg);
Rules.LoadRules(manifest, new Map()); Rules.LoadRules(manifest, new Map());
} }

View File

@@ -87,9 +87,7 @@ namespace SequenceEditor
var mods = args[0].Split(','); var mods = args[0].Split(',');
var manifest = new Manifest(mods); var manifest = new Manifest(mods);
FileSystem.LoadFromManifest( manifest );
foreach (var folder in manifest.Folders) FileSystem.Mount(folder);
foreach (var pkg in manifest.Packages) FileSystem.Mount(pkg);
XmlFilename = args[1]; XmlFilename = args[1];
Doc = new XmlDocument(); Doc = new XmlDocument();