コード例 #1
0
        internal override bool Write(WzFileStream stream)
        {
            stream.Write1u(this.Unknow1_Byte);
            stream.Write4(this.mSoundData.Length, true);
            stream.Write4(this.Duration, true);
            stream.Write1u(this.Unknow3_Byte);

            this.MediaType.Write(stream);

            stream.Write(this.mSoundData);

            return(true);
        }
コード例 #2
0
ファイル: SerializeString.cs プロジェクト: stu98832/libwz
        /// <summary> 將文字寫入指定的<see cref="WzFileStream"/>中 </summary>
        public static void Write(WzFileStream stream, string str)
        {
            int  len = str.Length;
            bool uni = false;

            foreach (char ch in str)
            {
                if ((int)ch > 0xFF)
                {
                    uni = true;
                    break;
                }
            }

            byte[] chars = (uni ? Encoding.Unicode : Encoding.ASCII).GetBytes(str);

            Process(chars, len, uni);

            if ((uni && len <= 127) || (!uni && len <= 128))
            {
                stream.Write1((sbyte)(uni ? len : -len));
            }
            else
            {
                stream.Write1u((byte)(uni ? 0x7F : 0x80));
                stream.Write4(len);
            }

            stream.Write(chars, true);
        }
コード例 #3
0
ファイル: WzLua.cs プロジェクト: stu98832/libwz
        /// <summary> 將腳本資料寫入指定資料流 </summary>
        public bool Write(WzFileStream stream)
        {
            byte[] data = Encoding.UTF8.GetBytes(this.Script);

            stream.Write1u(1);
            stream.Write4(data.Length, true);
            stream.Write(data, data.Length, true);
            return(true);
        }
コード例 #4
0
ファイル: WzDirectory.cs プロジェクト: stu98832/libwz
        internal override void Write(WzFileStream zf)
        {
            // start write
            int count = this.Items.Count;

            long[] itemoff = new long[count];

            this.Offset = (uint)zf.Tell();

            zf.Write4(count, true);

            // write header
            for (int i = 0; i < count; i++)
            {
                WzArchiveItem item = this.Items[i];
                zf.StringPool.DirectoryWrite(item.Name, item.Type, WzArchiveItemType.Reference);
                zf.Write4(item.Size, true);
                zf.Write4(item.Checksum, true);

                itemoff[i] = zf.Tell();
                zf.Write4u(0u); // reserve
            }

            // package items
            for (int i = 0; i < count; i++)
            {
                this.Items[i].Write(zf);
            }

            long endoff = zf.Tell();

            // rewrite offset
            for (int i = 0; i < count; i++)
            {
                zf.Seek(itemoff[i]);
                uint offKey = HashTools.GenerateOffsetKey((uint)zf.Tell(), this.Archive.DataOffset, this.Archive.Hash);
                uint encoff = HashTools.EncryptOffsetHash(this.Items[i].Offset, offKey, this.Archive.DataOffset);
                zf.Write4u(encoff);
            }

            // end write
            zf.Seek(endoff);
        }
コード例 #5
0
ファイル: WzCanvas.cs プロジェクト: stu98832/libwz
        internal override bool Write(WzFileStream stream)
        {
            bool hasprop = this.CanvasProperty.Count > 0;

            stream.Write1u(this.Unknow1_Byte);
            stream.WriteBool(hasprop);
            if (hasprop)
            {
                this.CanvasProperty.Write(stream);
            }
            stream.Write4(this.Width, true);
            stream.Write4(this.Height, true);
            stream.Write4((int)this.Format, true);
            stream.Write1u(this.Scale);
            stream.Write4(this.Unknow2_Int);

            stream.Write4(this.mCanvasData.Length);
            stream.Write(this.mCanvasData);

            return(true);
        }
コード例 #6
0
ファイル: WzConvex2D.cs プロジェクト: stu98832/libwz
        internal override bool Write(WzFileStream stream)
        {
            int nSize = this.Vertices.Count;

            stream.Write4(nSize, true);
            for (int i = 0; i < nSize; ++i)
            {
                stream.StringPool.Write(this.Vertices[i].ClassName, 0x73, 0x1B);
                this.Vertices[i].Write(stream);
            }
            return(true);
        }
コード例 #7
0
ファイル: WzProperty.cs プロジェクト: stu98832/libwz
        internal override bool Write(WzFileStream stream)
        {
            stream.Write2u(0);
            stream.Write4(this.mList.Count, true);

            for (int i = 0; i < this.mList.Count; ++i)
            {
                this.WriteVariant(this.mList[i], stream);
            }

            return(true);
        }
コード例 #8
0
ファイル: WzMediaType.cs プロジェクト: stu98832/libwz
        internal void Write(WzFileStream stream)
        {
            stream.Write(this.majortype.ToByteArray());
            stream.Write(this.subtype.ToByteArray());
            stream.Write1u(this.Unknow1_Byte);
            stream.Write1u(this.Unknow2_Byte);
            stream.Write(this.formattype.ToByteArray());

            if (this.formattype == SoundDX8Constants.WMFORMAT_WaveFormatEx)
            {
                stream.Write4((int)this.cbFormat, true);
                stream.Write(this.pbFormat);
            }
        }
コード例 #9
0
ファイル: WzVector2D.cs プロジェクト: stu98832/libwz
 internal override bool Write(WzFileStream stream)
 {
     stream.Write4(this.X, true);
     stream.Write4(this.Y, true);
     return(true);
 }
コード例 #10
0
ファイル: WzUInt.cs プロジェクト: stu98832/libwz
 internal override void Write(WzFileStream fs)
 {
     fs.Write4((int)this.Value, true);
 }