Fixed loading cache_y.dat files

This commit is contained in:
dexy 2024-07-22 22:44:38 +10:00
parent 97c24710e4
commit b62162cf21

View File

@ -381,39 +381,37 @@ namespace CodeWalker.GameFiles
[TypeConverter(typeof(ExpandableObjectConverter))] public class CacheFileDate : IMetaXmlItem [TypeConverter(typeof(ExpandableObjectConverter))] public class CacheFileDate : IMetaXmlItem
{ {
public MetaHash FileName { get; set; } //"resource_surrogate:/%s.rpf" public MetaHash FileName { get; set; } //"resource_surrogate:/%s.rpf"
public DateTime TimeStamp { get; set; } public long TimeStamp { get; set; }
public uint FileID { get; set; } public uint FileID { get; set; }
public DateTime TimeStampUTC => DateTime.FromFileTimeUtc(TimeStamp);
public CacheFileDate() public CacheFileDate()
{ } { }
public CacheFileDate(string line) public CacheFileDate(string line)
{ {
string[] parts = line.Split(' '); string[] p = line.Split(' ');
if (parts.Length == 3) if (p.Length > 0) FileName = new MetaHash(uint.Parse(p[0]));
{ if (p.Length > 1) TimeStamp = long.Parse(p[1]);
FileName = new MetaHash(uint.Parse(parts[0])); if (p.Length > 2) FileID = uint.Parse(p[2]);
TimeStamp = DateTime.FromFileTimeUtc(long.Parse(parts[1]));
FileID = uint.Parse(parts[2]);
}
else
{ } //testing
} }
public string ToCacheFileString() public string ToCacheFileString()
{ {
return FileName.Hash.ToString() + " " + TimeStamp.ToFileTimeUtc().ToString() + " " + FileID.ToString(); if (FileID == 0) return $"{FileName.Hash} {TimeStamp}";
else return $"{FileName.Hash} {TimeStamp} {FileID}";
} }
public void WriteXml(StringBuilder sb, int indent) public void WriteXml(StringBuilder sb, int indent)
{ {
CacheDatXml.StringTag(sb, indent, "fileName", CacheDatXml.HashString(FileName)); CacheDatXml.StringTag(sb, indent, "fileName", CacheDatXml.HashString(FileName));
CacheDatXml.ValueTag(sb, indent, "timeStamp", TimeStamp.ToFileTimeUtc().ToString()); CacheDatXml.ValueTag(sb, indent, "timeStamp", ((ulong)TimeStamp).ToString());
CacheDatXml.ValueTag(sb, indent, "fileID", FileID.ToString()); CacheDatXml.ValueTag(sb, indent, "fileID", FileID.ToString());
} }
public void ReadXml(XmlNode node) public void ReadXml(XmlNode node)
{ {
FileName = XmlMeta.GetHash(Xml.GetChildInnerText(node, "fileName")); FileName = XmlMeta.GetHash(Xml.GetChildInnerText(node, "fileName"));
TimeStamp = DateTime.FromFileTimeUtc((long)Xml.GetChildULongAttribute(node, "timeStamp")); TimeStamp = (long)Xml.GetChildULongAttribute(node, "timeStamp");
FileID = Xml.GetChildUIntAttribute(node, "fileID"); FileID = Xml.GetChildUIntAttribute(node, "fileID");
} }