Ejemplo n.º 1
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 2
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;
        }
Ejemplo n.º 3
0
        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);
        }