コード例 #1
0
ファイル: Doct.cs プロジェクト: xorllc/OpenKh
        public static void Write(Stream stream, Doct doct)
        {
            if (!stream.CanWrite || !stream.CanSeek)
            {
                throw new InvalidDataException($"Write or seek must be supported.");
            }

            var entry1Data = new MemoryStream();
            {
                entry1Data.WriteList(doct.Entry1List);
            }

            var entry2Data = new MemoryStream();
            {
                entry2Data.WriteList(doct.Entry2List);
            }

            {
                var writer = new BinaryWriter(stream);

                var newHeader = new HeaderDef
                {
                    MagicCode         = MagicCode,
                    Version           = doct.Header.Version,
                    Unk2              = doct.Header.Unk2,
                    HeaderOffset      = 0,
                    HeaderLength      = 0x2C,
                    Entry1FirstOffset = 0x2C,
                    Entry1TotalLength = Convert.ToInt32(entry1Data.Length),
                    Entry2FirstOffset = 0x2C + Convert.ToInt32(entry1Data.Length),
                    Entry2TotalLength = Convert.ToInt32(entry2Data.Length),
                    Entry3FirstOffset = 0x2C + Convert.ToInt32(entry1Data.Length) + Convert.ToInt32(entry2Data.Length),
                    Entry3TotalLength = 0,
                };

                BinaryMapping.WriteObject(writer, newHeader);

                entry1Data.Position = 0;
                entry1Data.CopyTo(stream);

                entry2Data.Position = 0;
                entry2Data.CopyTo(stream);
            }
        }
コード例 #2
0
 public void Write(Stream stream) =>
 Doct.Write(stream, this);