Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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);
                }
            }
        }