Example #1
0
        private byte[] ResolveData(WzFileStream zs)
        {
            byte unk = zs.Read1u();
            byte cmf = zs.Read1u();
            byte flg = zs.Read1u();

            zs.Skip(-3);

            if (CanvasZlibTool.CheckDeflate(unk, cmf, flg))
            {
                return(zs.Read(this.DataSize));
            }
            else
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    ms.WriteByte(zs.Read1u());
                    for (int i = 1; i < this.DataSize;)
                    {
                        int blocksize = zs.Read4();
                        ms.Write(zs.Read(blocksize, true), 0, blocksize);
                        i += blocksize + 4;
                    }
                    return(ms.ToArray());
                }
            }
        }
Example #2
0
        internal override bool Read(WzFileStream stream)
        {
            this.Unknow1_Byte = stream.Read1u();
            bool hasProperty = stream.ReadBool();

            if (hasProperty)
            {
                this.CanvasProperty.Read(stream);
            }
            this.Width         = stream.Read4(true);
            this.Height        = stream.Read4(true);
            this.Format        = (WzCanvasFormat)stream.Read4(true);
            this.Scale         = stream.Read1u();
            this.Unknow2_Int   = stream.Read4();
            this.DataSize      = stream.Read4();
            this.mCanvasOffset = (uint)stream.Tell();

            if (stream.DynamicRead)
            {
                stream.Skip(this.DataSize);
                this.mStream = stream;
            }
            else
            {
                this.CanvasData = this.ResolveData(stream);
            }

            return(true);
        }
Example #3
0
        internal void Read(WzFileStream stream)
        {
            this.majortype    = new Guid(stream.Read(16));       //MEDIATYPE_Stream
            this.subtype      = new Guid(stream.Read(16));       //MEDIASUBTYPE_WAVE
            this.Unknow1_Byte = stream.Read1u();
            this.Unknow2_Byte = stream.Read1u();
            this.formattype   = new Guid(stream.Read(16));       //WMFORMAT_WaveFormatEx

            if (this.formattype == SoundDX8Constants.WMFORMAT_WaveFormatEx)
            {
                this.cbFormat = (uint)stream.Read4(true);
                this.pbFormat = stream.Read((int)this.cbFormat);
            }
        }
Example #4
0
        internal override bool Read(WzFileStream stream)
        {
            this.Unknow1_Byte = stream.Read1u();
            this.DataSize     = stream.Read4(true);
            this.Duration     = stream.Read4(true);
            this.Unknow3_Byte = stream.Read1u();

            WzMediaType wzmt = new WzMediaType();

            wzmt.Read(stream);
            this.MediaType    = wzmt;
            this.mSoundOffset = (uint)stream.Tell();
            if (stream.DynamicRead)
            {
                this.mStream = stream;
                stream.Skip(this.DataSize);
            }
            else
            {
                this.SoundData = stream.Read(this.DataSize);
            }
            return(true);
        }
Example #5
0
        /// <summary> 從指定資料流讀取腳本資料 </summary>
        public bool Read(WzFileStream stream)
        {
            stream.Seek(0, true);
            byte flag = stream.Read1u();

            switch (flag)
            {
            case 1:
                int len = stream.Read4(true);
                this.Script = stream.ReadString(len, Encoding.UTF8, true);
                break;

            default:
                throw new NotSupportedException("Not supported flag : " + flag);
            }
            return(true);
        }
Example #6
0
 internal override bool Read(WzFileStream stream)
 {
     this.Unknow1_Byte = stream.Read1u();
     this.Path         = stream.StringPool.Read();
     return(true);
 }
Example #7
0
        private WzVariant ReadVariant(WzFileStream stream)
        {
            WzVariant variant = null;

            string        name = stream.StringPool.Read();
            WzVariantType type = (WzVariantType)stream.Read1u();

            switch (type)
            {
            case WzVariantType.Empty:
                variant = new WzEmpty(name);
                break;

            case WzVariantType.Null:
                variant = new WzNull(name);
                break;

            case WzVariantType.Short:
                variant = new WzShort(name);
                break;

            case WzVariantType.Int:
                variant = new WzInt(name);
                break;

            case WzVariantType.Float:
                variant = new WzFloat(name);
                break;

            case WzVariantType.Double:
                variant = new WzDouble(name);
                break;

            case WzVariantType.String:
                variant = new WzString(name);
                break;

            case WzVariantType.Boolean:     // (0xFFFF = 1, 0x0000 = 0)
                variant = new WzBool(name);
                break;

            case WzVariantType.UInt:
                variant = new WzUInt(name);
                break;

            case WzVariantType.Long:
                variant = new WzLong(name);
                break;

            case WzVariantType.Dispatch:
                variant = new WzDispatch(name);
                break;
            }

            if (variant != null)
            {
                variant.Parent = this;
                variant.Read(stream);
            }

            return(variant);
        }