public XntFile(string inFilename, List <string> names) { filename = inFilename; for (int i = 0; i < names.Count; i++) { XntTextureEntry entry = new XntTextureEntry(); entry.mysteryIndex = 0; entry.filename = names[i]; entry.firstValue = 4; entry.secondValue = 1; fileEntries.Add(entry); } }
public XntFile(string inFilename, byte[] rawData, byte[] subHeader, int[] ptrs, int baseAddr) { header = subHeader; filename = inFilename; MemoryStream inStream = new MemoryStream(rawData); BinaryReader inReader = new BinaryReader(inStream); inStream.Seek(8, SeekOrigin.Begin); int topLevelLoc = inReader.ReadInt32(); inStream.Seek(topLevelLoc, SeekOrigin.Begin); int stringCount = inReader.ReadInt32(); int startLoc = inReader.ReadInt32() - baseAddr; inStream.Seek(startLoc, SeekOrigin.Begin); int[] stringLocs = new int[stringCount]; for (int i = 0; i < stringCount; i++) { XntTextureEntry entry = new XntTextureEntry(); entry.mysteryIndex = inReader.ReadInt32(); stringLocs[i] = inReader.ReadInt32() - baseAddr; entry.firstValue = inReader.ReadInt16(); entry.secondValue = inReader.ReadInt16(); entry.thirdValue = inReader.ReadInt32(); entry.fourthValue = inReader.ReadInt32(); fileEntries.Add(entry); } for (int i = 0; i < stringCount; i++) { inStream.Seek(stringLocs[i], SeekOrigin.Begin); List <byte> bytes = new List <byte>(); byte currentChar = inReader.ReadByte(); while (currentChar != 0) { bytes.Add(currentChar); currentChar = inReader.ReadByte(); } fileEntries[i].filename = Encoding.ASCII.GetString(bytes.ToArray()); } }