diff --git a/OpenRA.Game/FileSystem/FileSystem.cs b/OpenRA.Game/FileSystem/FileSystem.cs index 3f83dd406b..3658ab36d2 100644 --- a/OpenRA.Game/FileSystem/FileSystem.cs +++ b/OpenRA.Game/FileSystem/FileSystem.cs @@ -30,22 +30,10 @@ namespace OpenRA.FileSystem public IReadWritePackage CreatePackage(string filename, int order, Dictionary content) { - if (filename.EndsWith(".mix", StringComparison.InvariantCultureIgnoreCase)) - return new MixFile(this, filename, order, content); if (filename.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)) return new ZipFile(this, filename, order, content); if (filename.EndsWith(".oramap", StringComparison.InvariantCultureIgnoreCase)) return new ZipFile(this, filename, order, content); - if (filename.EndsWith(".RS", StringComparison.InvariantCultureIgnoreCase)) - throw new NotImplementedException("The creation of .RS archives is unimplemented"); - if (filename.EndsWith(".Z", StringComparison.InvariantCultureIgnoreCase)) - throw new NotImplementedException("The creation of .Z archives is unimplemented"); - if (filename.EndsWith(".PAK", StringComparison.InvariantCultureIgnoreCase)) - throw new NotImplementedException("The creation of .PAK archives is unimplemented"); - if (filename.EndsWith(".big", StringComparison.InvariantCultureIgnoreCase)) - throw new NotImplementedException("The creation of .big archives is unimplemented"); - if (filename.EndsWith(".cab", StringComparison.InvariantCultureIgnoreCase)) - throw new NotImplementedException("The creation of .cab archives is unimplemented"); return new Folder(filename, order, content); } diff --git a/OpenRA.Game/FileSystem/MixFile.cs b/OpenRA.Game/FileSystem/MixFile.cs index acb4683a00..25532a8ff5 100644 --- a/OpenRA.Game/FileSystem/MixFile.cs +++ b/OpenRA.Game/FileSystem/MixFile.cs @@ -18,7 +18,7 @@ using OpenRA.Primitives; namespace OpenRA.FileSystem { - public sealed class MixFile : IReadWritePackage + public sealed class MixFile : IReadOnlyPackage { readonly Dictionary index; readonly long dataStart; @@ -28,31 +28,6 @@ namespace OpenRA.FileSystem readonly FileSystem context; readonly PackageHashType type; - // Save a mix to disk with the given contents - public MixFile(FileSystem context, string filename, int priority, Dictionary contents) - { - this.filename = filename; - this.priority = priority; - this.type = PackageHashType.Classic; - this.context = context; - - if (File.Exists(filename)) - File.Delete(filename); - - s = File.Create(filename); - try - { - index = new Dictionary(); - contents.Add("local mix database.dat", new XccLocalDatabase(contents.Keys.Append("local mix database.dat")).Data()); - Write(contents); - } - catch - { - Dispose(); - throw; - } - } - public MixFile(FileSystem context, string filename, PackageHashType type, int priority) { this.filename = filename; @@ -248,45 +223,6 @@ namespace OpenRA.FileSystem public int Priority { get { return 1000 + priority; } } public string Name { get { return filename; } } - public void Write(Dictionary contents) - { - // Cannot modify existing mixfile - rename existing file and - // create a new one with original content plus modifications - context.Unmount(this); - - // TODO: Add existing data to the contents list - if (index.Count > 0) - throw new NotImplementedException("Updating mix files unfinished"); - - // Construct a list of entries for the file header - uint dataSize = 0; - var items = new List(); - foreach (var kv in contents) - { - var length = (uint)kv.Value.Length; - var hash = PackageEntry.HashFilename(Path.GetFileName(kv.Key), type); - items.Add(new PackageEntry(hash, dataSize, length)); - dataSize += length; - } - - // Write the new file - s.Seek(0, SeekOrigin.Begin); - using (var writer = new BinaryWriter(s)) - { - // Write file header - writer.Write((ushort)items.Count); - writer.Write(dataSize); - foreach (var item in items) - item.Write(writer); - - writer.Flush(); - - // Copy file data - foreach (var file in contents) - s.Write(file.Value); - } - } - public void Dispose() { s.Dispose();