private void ReadEntries() { int i = GPakUtil.FirstEntryOffset; while (i < PackageFileSize) { // Read 4 bytes to find the length of the entry's name var entryNameLength = GPakUtil.GetByteRangeAsInteger(GPakUtil.GetBytesFromFile(_packageFileReader, i, 4)); i += 4; // Read ENTRY_NAME bytes to obtain it's name var entryName = GPakUtil.GetByteRangeAsString(GPakUtil.GetBytesFromFile(_packageFileReader, i, entryNameLength)); i += entryName.Length; // Read 1 byte to check if the entry is compressed or not ("C" for compressed, "N" for not compressed) var compressedFlag = GPakUtil.GetByteRangeAsString(GPakUtil.GetBytesFromFile(_packageFileReader, i, 1)); i += 1; var isCompressed = compressedFlag == "C"; // Read 4 bytes to get the size of the entry in the package var entryContentSize = GPakUtil.GetByteRangeAsInteger(GPakUtil.GetBytesFromFile(_packageFileReader, i, 4)); i += 4; // Create a new entry based on the previously gathered info _entryTable.Add(entryName, new GPakEntry(entryContentSize, isCompressed, i)); i += entryContentSize; EntryCount++; } _packageFileReader.Close(); }
private bool IsHeaderValid() { var header = GPakUtil.GetBytesFromFile(_packageFileReader, 0, GPakUtil.FirstEntryOffset); return(GPakUtil.GetByteRangeAsString(header).Equals(GPakUtil.Header)); }