示例#1
0
 private static void WriteMP3(WZAudioProperty node, BinaryWriter bw)
 {
     byte[] m = node.Value;
     bw.Write(m);
     node.Dispose();
     m = null;
 }
示例#2
0
            public uint AddMP3(WZAudioProperty node)
            {
                uint ret = (uint)MP3s.Count;

                MP3s.Add(node);
                return(ret);
            }
示例#3
0
 public uint AddMP3(WZAudioProperty node) {
     uint ret = (uint) MP3s.Count;
     MP3s.Add(node);
     return ret;
 }
示例#4
0
 private static void WriteMP3(WZAudioProperty node, BinaryWriter bw) {
     byte[] m = node.Value;
     bw.Write(m);
     node.Dispose();
     m = null;
 }
示例#5
0
        private static void WriteNode(WZObject node, DumpState ds, BinaryWriter bw, uint nextChildID)
        {
            ds.AddNode(node);
            bw.Write(ds.AddString(node.Name));
            bw.Write(nextChildID);
            bw.Write((ushort)node.ChildCount);
            ushort type;

            if (node is WZDirectory || node is WZImage || node is WZSubProperty || node is WZConvexProperty ||
                node is WZNullProperty)
            {
                type = 0; // no data; children only (8)
            }
            else if (node is WZInt32Property || node is WZUInt16Property || node is WZInt64Property)
            {
                type = 1; // int32 (4)
            }
            else if (node is WZSingleProperty || node is WZDoubleProperty)
            {
                type = 2; // Double (0)
            }
            else if (node is WZStringProperty)
            {
                type = 3; // String (4)
            }
            else if (node is WZPointProperty)
            {
                type = 4; // (0)
            }
            else if (node is WZCanvasProperty)
            {
                type = 5; // (4)
            }
            else if (node is WZAudioProperty)
            {
                type = 6; // (4)
            }
            else
            {
                throw new InvalidOperationException("Unhandled WZ node type [1]");
            }

            bw.Write(type);

            if (node is WZInt32Property)
            {
                bw.Write((long)((WZInt32Property)node).Value);
            }
            else if (node is WZUInt16Property)
            {
                bw.Write((long)((WZUInt16Property)node).Value);
            }
            else if (node is WZInt64Property)
            {
                bw.Write(((WZInt64Property)node).Value);
            }
            else if (node is WZSingleProperty)
            {
                bw.Write((double)((WZSingleProperty)node).Value);
            }
            else if (node is WZDoubleProperty)
            {
                bw.Write(((WZDoubleProperty)node).Value);
            }
            else if (node is WZStringProperty)
            {
                bw.Write(ds.AddString(((WZStringProperty)node).Value));
            }
            else if (node is WZPointProperty)
            {
                Point pNode = ((WZPointProperty)node).Value;
                bw.Write(pNode.X);
                bw.Write(pNode.Y);
            }
            else if (node is WZCanvasProperty)
            {
                WZCanvasProperty wzcp = (WZCanvasProperty)node;
                bw.Write(ds.AddCanvas(wzcp));
                if (dumpImg)
                {
                    bw.Write((ushort)wzcp.Value.Width);
                    bw.Write((ushort)wzcp.Value.Height);
                    wzcp.Dispose();
                }
                else
                {
                    bw.Write(0);
                }
            }
            else if (node is WZAudioProperty)
            {
                WZAudioProperty wzmp = (WZAudioProperty)node;
                bw.Write(ds.AddMP3(wzmp));
                if (dumpSnd)
                {
                    bw.Write((uint)wzmp.Value.Length);
                    wzmp.Dispose();
                }
                else
                {
                    bw.Write(0);
                }
            }
            switch (type)
            {
            case 0:
                bw.Write(0L);
                break;

            case 3:
                bw.Write(0);
                break;
            }
        }