Allow mounted IFolders to be queried.

This commit is contained in:
Paul Chote
2013-05-19 19:14:20 +12:00
parent be3b18057a
commit de3d4da000
5 changed files with 21 additions and 28 deletions

View File

@@ -18,7 +18,7 @@ namespace OpenRA.FileFormats
{
public static class FileSystem
{
static List<IFolder> MountedFolders = new List<IFolder>();
public static List<IFolder> MountedFolders = new List<IFolder>();
static Cache<uint, List<IFolder>> allFiles = new Cache<uint, List<IFolder>>( _ => new List<IFolder>() );
@@ -80,10 +80,8 @@ namespace OpenRA.FileFormats
if (name.StartsWith("^"))
name = Platform.SupportDir+name.Substring(1);
if (Directory.Exists(name))
FolderPaths.Add(name);
var a = (Action)(() => FileSystem.MountInner(OpenPackage(name)));
Action a = () => FileSystem.MountInner(OpenPackage(name));
if (optional)
try { a(); }

View File

@@ -17,8 +17,7 @@ namespace OpenRA.FileFormats
public class Folder : IFolder
{
readonly string path;
int priority;
readonly int priority;
// Create a new folder package
public Folder(string path, int priority, Dictionary<string, byte[]> contents)
@@ -65,11 +64,8 @@ namespace OpenRA.FileFormats
return File.Exists(Path.Combine(path, filename));
}
public int Priority
{
get { return priority; }
}
public int Priority { get { return priority; } }
public string Name { get { return path; } }
public void Write(Dictionary<string, byte[]> contents)
{

View File

@@ -21,10 +21,12 @@ namespace OpenRA.FileFormats
readonly List<string> filenames;
readonly Stream s;
readonly long dataStart = 255;
int priority;
readonly int priority;
readonly string filename;
public InstallShieldPackage(string filename, int priority)
{
this.filename = filename;
this.priority = priority;
filenames = new List<string>();
s = FileSystem.Open(filename);
@@ -120,11 +122,8 @@ namespace OpenRA.FileFormats
return index.ContainsKey(PackageEntry.HashFilename(filename));
}
public int Priority
{
get { return 2000 + priority; }
}
public int Priority { get { return 2000 + priority; }}
public string Name { get { return filename; } }
public void Write(Dictionary<string, byte[]> contents)
{

View File

@@ -24,6 +24,7 @@ namespace OpenRA.FileFormats
IEnumerable<string> AllFileNames();
void Write(Dictionary<string, byte[]> contents);
int Priority { get; }
string Name { get; }
}
public class MixFile : IFolder
@@ -31,11 +32,13 @@ namespace OpenRA.FileFormats
readonly Dictionary<uint, PackageEntry> index;
readonly long dataStart;
readonly Stream s;
int priority;
readonly int priority;
readonly string filename;
// Save a mix to disk with the given contents
public MixFile(string filename, int priority, Dictionary<string, byte[]> contents)
{
this.filename = filename;
this.priority = priority;
if (File.Exists(filename))
File.Delete(filename);
@@ -48,6 +51,7 @@ namespace OpenRA.FileFormats
public MixFile(string filename, int priority)
{
this.filename = filename;
this.priority = priority;
s = FileSystem.Open(filename);
@@ -226,10 +230,8 @@ namespace OpenRA.FileFormats
return FindMatchingHash(filename).HasValue;
}
public int Priority
{
get { return 1000 + priority; }
}
public int Priority { get { return 1000 + priority; } }
public string Name { get { return filename; } }
public void Write(Dictionary<string, byte[]> contents)
{

View File

@@ -81,10 +81,8 @@ namespace OpenRA.FileFormats
return pkg.GetEntry(filename) != null;
}
public int Priority
{
get { return 500 + priority; }
}
public int Priority { get { return 500 + priority; } }
public string Name { get { return filename; } }
public void Write(Dictionary<string, byte[]> contents)
{