added support for Tiberian Sun MIX filename hashes

closes #3227
This commit is contained in:
Matthias Mailänder
2013-05-08 20:58:25 +02:00
parent 67cb3c5cf7
commit 7fb85e7abb
6 changed files with 162 additions and 10 deletions

View File

@@ -1,6 +1,6 @@
#region Copyright & License Information
/*
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2013 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
@@ -142,7 +142,11 @@ namespace OpenRA.FileFormats
public Stream GetContent(string filename)
{
return GetContent(PackageEntry.HashFilename(filename));
var content = GetContent(PackageEntry.HashFilename(filename)); // RA1 and TD
if (content != null)
return content;
else
return GetContent(PackageEntry.CrcHashFilename(filename)); // TS
}
public IEnumerable<uint> AllFileHashes()
@@ -152,7 +156,7 @@ namespace OpenRA.FileFormats
public bool Exists(string filename)
{
return index.ContainsKey(PackageEntry.HashFilename(filename));
return (index.ContainsKey(PackageEntry.HashFilename(filename)) || index.ContainsKey(PackageEntry.CrcHashFilename(filename)));
}
@@ -178,7 +182,7 @@ namespace OpenRA.FileFormats
{
var length = (uint)kv.Value.Length;
var hash = PackageEntry.HashFilename(Path.GetFileName(kv.Key));
items.Add(new PackageEntry(hash, dataSize, length));
items.Add(new PackageEntry(hash, dataSize, length)); // TODO: Tiberian Sun uses CRC hashes
dataSize += length;
}