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()); } } }
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); }
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); } }
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); }
/// <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); }
internal override bool Read(WzFileStream stream) { this.Unknow1_Byte = stream.Read1u(); this.Path = stream.StringPool.Read(); return(true); }
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); }