internal void SaveDirectory(BinaryWriter wzWriter) { this.offset = (uint)wzWriter.BaseStream.Position; int i = this.subDirs.Count + this.images.Count; if (i == 0) { this.BlockSize = 0; } else { WzTools.WriteCompressedInt(wzWriter, i); foreach (WzDirectory directory in this.subDirs) { byte num2 = 3; wzWriter.Write(num2); WzTools.WriteEncodedString(wzWriter, directory.Name); WzTools.WriteCompressedInt(wzWriter, directory.BlockSize); WzTools.WriteCompressedInt(wzWriter, directory.Checksum); wzWriter.Write(this.EncryptOffset(directory.Offset, wzWriter.BaseStream.Position)); } foreach (WzImage image in this.images) { byte num3 = 4; wzWriter.Write(num3); WzTools.WriteEncodedString(wzWriter, image.Name); WzTools.WriteCompressedInt(wzWriter, image.BlockSize); WzTools.WriteCompressedInt(wzWriter, image.Checksum); wzWriter.Write(this.EncryptOffset(image.Offset, wzWriter.BaseStream.Position)); } foreach (WzDirectory directory2 in this.subDirs) { if (directory2.BlockSize > 0) { directory2.SaveDirectory(wzWriter); } else { wzWriter.Write((byte)0); } } } }
internal void SaveImage(BinaryWriter wzWriter) { if (this.changed == false) { this.wzReader.BaseStream.Position = this.offset; byte[] imgdata = new byte[this.size]; this.wzReader.Read(imgdata, 0, this.size); wzWriter.Write(imgdata, 0, this.size); return; } if ((this.wzReader != null) && !this.parsed) { this.ParseImage(); } wzWriter.Write((byte)0x73); WzTools.WriteEncodedString(wzWriter, "Property"); wzWriter.Write((ushort)0); WzTools.WriteCompressedInt(wzWriter, this.properties.Count); for (int i = 0; i < this.properties.Count; i++) { if (this.properties[i] is WzExtendedProperty) { this.properties[i].Name = ((WzExtendedProperty)this.properties[i]).ExtendedProperty.Name; } wzWriter.Write((byte)0); WzTools.WriteEncodedString(wzWriter, this.properties[i].Name); switch (this.properties[i].PropertyType) { case WzPropertyType.Null: { wzWriter.Write((byte)0); continue; } case WzPropertyType.UnsignedShort: { wzWriter.Write((byte)2); wzWriter.Write(((WzUnsignedShortProperty)this.properties[i]).Value); continue; } case WzPropertyType.CompressedInt: { wzWriter.Write((byte)3); WzTools.WriteCompressedInt(wzWriter, ((WzCompressedIntProperty)this.properties[i]).Value); continue; } case WzPropertyType.ByteFloat: { wzWriter.Write((byte)4); if (((WzByteFloatProperty)this.properties[i]).Value != 0f) { break; } wzWriter.Write((byte)0); continue; } case WzPropertyType.Double: { wzWriter.Write((byte)5); wzWriter.Write(((WzDoubleProperty)this.properties[i]).Value); continue; } case WzPropertyType.String: { wzWriter.Write((byte)8); wzWriter.Write((byte)0); WzTools.WriteEncodedString(wzWriter, ((WzStringProperty)this.properties[i]).Value); continue; } case WzPropertyType.Extended: { wzWriter.Write((byte)9); long position = wzWriter.BaseStream.Position; wzWriter.Write(0); ((WzExtendedProperty)this.properties[i]).SaveExtendedProperty(wzWriter); int num3 = (int)(wzWriter.BaseStream.Position - position); long num4 = wzWriter.BaseStream.Position; wzWriter.BaseStream.Position = position; wzWriter.Write((int)(num3 - 4)); wzWriter.BaseStream.Position = num4; continue; } default: { continue; } } wzWriter.Write((byte)0x80); wzWriter.Write(((WzByteFloatProperty)this.properties[i]).Value); } this.size = (int)wzWriter.BaseStream.Position; }
internal void SaveExtendedProperty(BinaryWriter wzWriter) { int num; int num5; switch (this.extendedProperty.PropertyType) { case WzPropertyType.SubProperty: wzWriter.Write((byte)0x73); WzTools.WriteEncodedString(wzWriter, "Property"); wzWriter.Write((ushort)0); WzTools.WriteCompressedInt(wzWriter, ((WzSubProperty)this.extendedProperty).WzProperties.Length); num = 0; goto Label_0275; case WzPropertyType.Canvas: wzWriter.Write((byte)0x73); WzTools.WriteEncodedString(wzWriter, "Canvas"); wzWriter.Write((byte)0); if (((WzCanvasProperty)this.extendedProperty).WzProperties.Length <= 0) { wzWriter.Write((byte)0); goto Label_052F; } wzWriter.Write((byte)1); wzWriter.Write((ushort)0); WzTools.WriteCompressedInt(wzWriter, ((WzCanvasProperty)this.extendedProperty).WzProperties.Length); num5 = 0; goto Label_050D; case WzPropertyType.Vector: wzWriter.Write((byte)0x73); WzTools.WriteEncodedString(wzWriter, "Shape2D#Vector2D"); WzTools.WriteCompressedInt(wzWriter, ((WzVectorProperty)this.extendedProperty).X.Value); WzTools.WriteCompressedInt(wzWriter, ((WzVectorProperty)this.extendedProperty).Y.Value); return; case WzPropertyType.Convex: wzWriter.Write((byte)0x73); WzTools.WriteEncodedString(wzWriter, "Shape2D#Convex2D"); WzTools.WriteCompressedInt(wzWriter, ((WzConvexProperty)this.extendedProperty).WzProperties.Length); for (int i = 0; i < ((WzConvexProperty)this.extendedProperty).WzProperties.Length; i++) { ((WzConvexProperty)this.extendedProperty).WzProperties[i].SaveExtendedProperty(wzWriter); } return; case WzPropertyType.Sound: wzWriter.Write((byte)0x73); WzTools.WriteEncodedString(wzWriter, "Sound_DX8"); wzWriter.Write((byte)0); WzTools.WriteCompressedInt(wzWriter, ((WzSoundProperty)this.extendedProperty).SoundData.Length); WzTools.WriteCompressedInt(wzWriter, 0); wzWriter.Write(((WzSoundProperty)this.extendedProperty).SoundData); return; case WzPropertyType.UOL: wzWriter.Write((byte)0x73); WzTools.WriteEncodedString(wzWriter, "UOL"); wzWriter.Write((byte)0); wzWriter.Write((byte)0); WzTools.WriteEncodedString(wzWriter, ((WzUOLProperty)this.extendedProperty).Value); return; default: return; } Label_0271: num++; Label_0275: if (num < ((WzSubProperty)this.extendedProperty).WzProperties.Length) { wzWriter.Write((byte)0); WzTools.WriteEncodedString(wzWriter, ((WzSubProperty)this.extendedProperty).WzProperties[num].Name); switch (((WzSubProperty)this.extendedProperty).WzProperties[num].PropertyType) { case WzPropertyType.Null: wzWriter.Write((byte)0); goto Label_0271; case WzPropertyType.UnsignedShort: wzWriter.Write((byte)2); wzWriter.Write(((WzUnsignedShortProperty)((WzSubProperty)this.extendedProperty).WzProperties[num]).Value); goto Label_0271; case WzPropertyType.CompressedInt: wzWriter.Write((byte)3); WzTools.WriteCompressedInt(wzWriter, ((WzCompressedIntProperty)((WzSubProperty)this.extendedProperty).WzProperties[num]).Value); goto Label_0271; case WzPropertyType.ByteFloat: wzWriter.Write((byte)4); if (((WzByteFloatProperty)((WzSubProperty)this.extendedProperty).WzProperties[num]).Value != 0f) { wzWriter.Write((byte)0x80); wzWriter.Write(((WzByteFloatProperty)((WzSubProperty)this.extendedProperty).WzProperties[num]).Value); } else { wzWriter.Write((byte)0); } goto Label_0271; case WzPropertyType.Double: wzWriter.Write((byte)5); wzWriter.Write(((WzDoubleProperty)((WzSubProperty)this.extendedProperty).WzProperties[num]).Value); goto Label_0271; case WzPropertyType.String: wzWriter.Write((byte)8); wzWriter.Write((byte)0); WzTools.WriteEncodedString(wzWriter, ((WzStringProperty)((WzSubProperty)this.extendedProperty).WzProperties[num]).Value); goto Label_0271; case WzPropertyType.Extended: { wzWriter.Write((byte)9); long position = wzWriter.BaseStream.Position; wzWriter.Write(0); ((WzExtendedProperty)((WzSubProperty)this.extendedProperty).WzProperties[num]).SaveExtendedProperty(wzWriter); int num3 = (int)(wzWriter.BaseStream.Position - position); long num4 = wzWriter.BaseStream.Position; wzWriter.BaseStream.Position = position; wzWriter.Write((int)(num3 - 4)); wzWriter.BaseStream.Position = num4; goto Label_0271; } } goto Label_0271; } return; Label_0507: num5++; Label_050D: if (num5 < ((WzCanvasProperty)this.extendedProperty).WzProperties.Length) { wzWriter.Write((byte)0); WzTools.WriteEncodedString(wzWriter, ((WzCanvasProperty)this.extendedProperty).WzProperties[num5].Name); switch (((WzCanvasProperty)this.extendedProperty).WzProperties[num5].PropertyType) { case WzPropertyType.Null: wzWriter.Write((byte)0); goto Label_0507; case WzPropertyType.UnsignedShort: wzWriter.Write((byte)2); wzWriter.Write(((WzUnsignedShortProperty)((WzCanvasProperty)this.extendedProperty).WzProperties[num5]).Value); goto Label_0507; case WzPropertyType.CompressedInt: wzWriter.Write((byte)3); WzTools.WriteCompressedInt(wzWriter, ((WzCompressedIntProperty)((WzCanvasProperty)this.extendedProperty).WzProperties[num5]).Value); goto Label_0507; case WzPropertyType.ByteFloat: wzWriter.Write((byte)4); if (((WzByteFloatProperty)((WzCanvasProperty)this.extendedProperty).WzProperties[num5]).Value != 0f) { wzWriter.Write((byte)0x80); wzWriter.Write(((WzByteFloatProperty)((WzCanvasProperty)this.extendedProperty).WzProperties[num5]).Value); } else { wzWriter.Write((byte)0); } goto Label_0507; case WzPropertyType.Double: wzWriter.Write((byte)5); wzWriter.Write(((WzDoubleProperty)((WzCanvasProperty)this.extendedProperty).WzProperties[num5]).Value); goto Label_0507; case WzPropertyType.String: wzWriter.Write((byte)8); wzWriter.Write((byte)0); WzTools.WriteEncodedString(wzWriter, ((WzStringProperty)((WzCanvasProperty)this.extendedProperty).WzProperties[num5]).Value); goto Label_0507; case WzPropertyType.Extended: { wzWriter.Write((byte)9); long num6 = wzWriter.BaseStream.Position; wzWriter.Write(0); ((WzExtendedProperty)((WzCanvasProperty)this.extendedProperty).WzProperties[num5]).SaveExtendedProperty(wzWriter); int num7 = (int)(wzWriter.BaseStream.Position - num6); long num8 = wzWriter.BaseStream.Position; wzWriter.BaseStream.Position = num6; wzWriter.Write((int)(num7 - 4)); wzWriter.BaseStream.Position = num8; goto Label_0507; } } goto Label_0507; } Label_052F: WzTools.WriteCompressedInt(wzWriter, ((WzCanvasProperty)this.extendedProperty).PngProperty.Width); WzTools.WriteCompressedInt(wzWriter, ((WzCanvasProperty)this.extendedProperty).PngProperty.Height); WzTools.WriteCompressedInt(wzWriter, ((WzCanvasProperty)this.extendedProperty).PngProperty.Format); wzWriter.Write((byte)0); wzWriter.Write(0); wzWriter.Write((int)(((WzCanvasProperty)this.extendedProperty).PngProperty.CompressedBytes.Length + 1)); wzWriter.Write((byte)0); wzWriter.Write(((WzCanvasProperty)this.extendedProperty).PngProperty.CompressedBytes); }