Remove legacy package creation code.

This commit is contained in:
Paul Chote
2016-01-15 22:50:45 +00:00
parent f8d0b97e8d
commit bdb8fd48ca
2 changed files with 1 additions and 77 deletions

View File

@@ -30,22 +30,10 @@ namespace OpenRA.FileSystem
public IReadWritePackage CreatePackage(string filename, int order, Dictionary<string, byte[]> content) public IReadWritePackage CreatePackage(string filename, int order, Dictionary<string, byte[]> content)
{ {
if (filename.EndsWith(".mix", StringComparison.InvariantCultureIgnoreCase))
return new MixFile(this, filename, order, content);
if (filename.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)) if (filename.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase))
return new ZipFile(this, filename, order, content); return new ZipFile(this, filename, order, content);
if (filename.EndsWith(".oramap", StringComparison.InvariantCultureIgnoreCase)) if (filename.EndsWith(".oramap", StringComparison.InvariantCultureIgnoreCase))
return new ZipFile(this, filename, order, content); 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); return new Folder(filename, order, content);
} }

View File

@@ -18,7 +18,7 @@ using OpenRA.Primitives;
namespace OpenRA.FileSystem namespace OpenRA.FileSystem
{ {
public sealed class MixFile : IReadWritePackage public sealed class MixFile : IReadOnlyPackage
{ {
readonly Dictionary<uint, PackageEntry> index; readonly Dictionary<uint, PackageEntry> index;
readonly long dataStart; readonly long dataStart;
@@ -28,31 +28,6 @@ namespace OpenRA.FileSystem
readonly FileSystem context; readonly FileSystem context;
readonly PackageHashType type; readonly PackageHashType type;
// Save a mix to disk with the given contents
public MixFile(FileSystem context, string filename, int priority, Dictionary<string, byte[]> 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<uint, PackageEntry>();
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) public MixFile(FileSystem context, string filename, PackageHashType type, int priority)
{ {
this.filename = filename; this.filename = filename;
@@ -248,45 +223,6 @@ namespace OpenRA.FileSystem
public int Priority { get { return 1000 + priority; } } public int Priority { get { return 1000 + priority; } }
public string Name { get { return filename; } } public string Name { get { return filename; } }
public void Write(Dictionary<string, byte[]> 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<PackageEntry>();
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() public void Dispose()
{ {
s.Dispose(); s.Dispose();