From 2d77d76e0c82ecc29ea2e38432a0e76cdd59358c Mon Sep 17 00:00:00 2001 From: dexy Date: Thu, 27 Dec 2018 11:53:53 +1100 Subject: [PATCH] Dat151 progress --- CodeWalker.Core/GameFiles/FileTypes/RelFile.cs | 15 +++++++++++++-- CodeWalker.Core/GameFiles/GameFileCache.cs | 12 +++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/CodeWalker.Core/GameFiles/FileTypes/RelFile.cs b/CodeWalker.Core/GameFiles/FileTypes/RelFile.cs index 3f85fc5..9ac398c 100644 --- a/CodeWalker.Core/GameFiles/FileTypes/RelFile.cs +++ b/CodeWalker.Core/GameFiles/FileTypes/RelFile.cs @@ -762,9 +762,20 @@ namespace CodeWalker.GameFiles } - //var sorted = RelDatasSorted.ToList(); + //for the correct index ordering, needs to be in order of hashes, but with bits rotated right by 8 (why!?) + var sorted = RelDatasSorted.ToList(); //sorted.Sort((a, b) => { return ((uint)a.NameHash).CompareTo((uint)b.NameHash); }); - //RelDatas = sorted.ToArray(); + sorted.Sort((a, b) => + { + var ah = (uint)a.NameHash; + var bh = (uint)b.NameHash; + var av = (ah >> 8) | (ah << 24); + var bv = (bh >> 8) | (bh << 24); + return av.CompareTo(bv); + }); + RelDatas = sorted.ToArray(); + + var hashes = new RelIndexHash[RelDatas.Length]; for (int i = 0; i < RelDatas.Length; i++) diff --git a/CodeWalker.Core/GameFiles/GameFileCache.cs b/CodeWalker.Core/GameFiles/GameFileCache.cs index 93586b4..baaef08 100644 --- a/CodeWalker.Core/GameFiles/GameFileCache.cs +++ b/CodeWalker.Core/GameFiles/GameFileCache.cs @@ -2121,6 +2121,7 @@ namespace CodeWalker.GameFiles StringBuilder sb = new StringBuilder(); StringBuilder sbh = new StringBuilder(); + StringBuilder sbi = new StringBuilder(); foreach (RpfFile rpf in RpfMan.AllRpfs) { @@ -2222,7 +2223,7 @@ namespace CodeWalker.GameFiles { for (int i = 0; i < data.Length; i++) //raw file test if (data[i] != rel.RawFileData[i]) - { } + { break; } } } @@ -2235,6 +2236,15 @@ namespace CodeWalker.GameFiles if (rel2.RelDatas == null) { } + + + //sbi.Clear(); + //foreach (var rd in rel.RelDatas) + //{ + // sbi.AppendLine(new FlagsUint(rd.NameHash).Bin); + //} + //string indexbinstr = sbi.ToString(); + } }