public void ReadFile(out uint dataHeader) { reader.BaseStream.Position = 0x20; Buffer = reader.ReadBytes(reader.ReadInt32() - 0x24); ShnCrypter.Crypt(Buffer, 0, Buffer.Length); reader = new BinaryReader(new MemoryStream(Buffer)); readHeaderInfo(out dataHeader); parseData(); }
public void SaveFile(uint dataHeader, byte[] baseHeader) { var stream = new MemoryStream(); using (var writer = new BinaryWriter(stream)) { writer.Write(dataHeader); writer.Write(table.Rows.Count); writer.Write(GetDefaultRecLen()); writer.Write(table.Columns.Count); for (int i = 0; i < table.Columns.Count; i++) { var column = (ShnColumn)table.Columns[i]; if (column.ColumnName.Contains("UnkCol")) { writer.Write(new byte[0x30]); } else { writer.WriteString(column.ColumnName, 0x30); } writer.Write(column.Type.TypeId); writer.Write(column.Length); } writeRows(writer); var sourceArray = stream.GetBuffer(); var destinationArray = new byte[stream.Length]; Array.Copy(sourceArray, destinationArray, stream.Length); ShnCrypter.Crypt(destinationArray, 0, destinationArray.Length); using (var w = new BinaryWriter(File.Create(filePath))) { w.Write(baseHeader.ToArray()); w.Write(destinationArray.Length + 0x24); w.Write(destinationArray); } } }