コード例 #1
0
 private void changeSoundButton_Click(object sender, EventArgs e)
 {
     if (DataTree.SelectedNode.Tag is WzSoundProperty)
     {
         OpenFileDialog dialog = new OpenFileDialog()
         {
             Title = "Select the sound", Filter = "Moving Pictures Experts Group Format 1 Audio Layer 3(*.mp3)|*.mp3"
         };
         if (dialog.ShowDialog() != DialogResult.OK)
         {
             return;
         }
         WzSoundProperty prop;
         try
         {
             prop = new WzSoundProperty(((WzSoundProperty)DataTree.SelectedNode.Tag).Name, dialog.FileName);
         }
         catch
         {
             Warning.Error(Properties.Resources.MainImageLoadError);
             return;
         }
         IPropertyContainer parent = (IPropertyContainer)((WzSoundProperty)DataTree.SelectedNode.Tag).Parent;
         ((WzSoundProperty)DataTree.SelectedNode.Tag).ParentImage.Changed = true;
         ((WzSoundProperty)DataTree.SelectedNode.Tag).Remove();
         DataTree.SelectedNode.Tag = prop;
         parent.AddProperty(prop);
         mp3Player.SoundProperty = prop;
     }
 }
コード例 #2
0
        public WzMp3Streamer(WzSoundProperty sound, bool repeat)
        {
            this.repeat = repeat;
            this.sound  = sound;
            byteStream  = new MemoryStream(sound.GetBytes(false));

            wavePlayer = new WaveOut(WaveCallbackInfo.FunctionCallback());
            try
            {
                mpegStream = new Mp3FileReader(byteStream);
                wavePlayer.Init(mpegStream);
            }
            catch (System.InvalidOperationException)
            {
                try
                {
                    waveFileStream = new WaveFileReader(byteStream);
                    wavePlayer.Init(waveFileStream);
                }
                catch (FormatException)
                {
                    playbackSuccessfully = false;
                }
                //InvalidDataException
            }
            wavePlayer.PlaybackStopped += new EventHandler <StoppedEventArgs>(wavePlayer_PlaybackStopped);
        }
コード例 #3
0
 public WzMp3Streamer(WzSoundProperty sound, bool repeat)
 {
     this.repeat = repeat;
     this.sound  = sound;
     byteStream  = new MemoryStream(sound.GetBytes(false));
     mpegStream  = new Mp3FileReader(byteStream);
     wavePlayer  = new WaveOut(WaveCallbackInfo.FunctionCallback());
     wavePlayer.Init(mpegStream);
     wavePlayer.PlaybackStopped += new EventHandler(wavePlayer_PlaybackStopped);
 }
コード例 #4
0
ファイル: WzXml.cs プロジェクト: odasm/WZ-Dumper
        private void WriteSoundProp(string wzPath, WzSoundProperty soundProp, AWzObject uol, bool uolDirCopy, string overridePath)
        {
            string fileName    = CleanFileName(uol != null && !uolDirCopy ? uol.Name : soundProp.Name);
            string newFilePath = overridePath ?? Path.Combine(ExtractPath, wzPath, fileName + ".mp3");

            CreateDirectory(ref wzPath);
            Form.UpdateToolstripStatus("Dumping " + soundProp.Name + ".mp3 to " + wzPath);
            using (var stream = new FileStream(newFilePath, FileMode.Create, FileAccess.Write)) {
                stream.Write(soundProp.GetBytes(), 0, soundProp.GetBytes().Length);
            }
        }
コード例 #5
0
        private void saveSoundButton_Click(object sender, EventArgs e)
        {
            if (!(DataTree.SelectedNode.Tag is WzSoundProperty))
            {
                return;
            }
            WzSoundProperty mp3    = (WzSoundProperty)DataTree.SelectedNode.Tag;
            SaveFileDialog  dialog = new SaveFileDialog()
            {
                Title = "Select where to save the image...", Filter = "Moving Pictures Experts Group Format 1 Audio Layer 3 (*.mp3)|*.mp3"
            };

            if (dialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            mp3.SaveToFile(dialog.FileName);
        }
コード例 #6
0
        public void ExtractSoundFile()
        {
            foreach (WzImage soundImage in this["sound"].WzImages)
            {
                if (!soundImage.Name.ToLower().Contains("bgm"))
                {
                    continue;
                }

                if (!soundImage.Parsed)
                {
                    soundImage.ParseImage();
                }

                foreach (WzImageProperty bgm in soundImage.WzProperties)
                {
                    try
                    {
                        WzSoundProperty sound = bgm as WzSoundProperty;
                        string          name  = WzInfoTools.RemoveExtension(soundImage.Name) + @"/" + bgm.Name;

                        if (bgm is WzUOLProperty)
                        {
                            sound = SolveUOLProperty <WzSoundProperty>((WzUOLProperty)bgm);
                            Program.InfoManager.BGMs[WzInfoTools.RemoveExtension(soundImage.Name) + @"/" + sound.Name] = sound;
                        }

                        Program.InfoManager.BGMs[name] = sound;
                    }
                    catch (Exception e)
                    {
                        int ia = 0;
                        ia++;
                    }
                }
            }
        }
コード例 #7
0
        internal WzImageProperty ParsePropertyFromXMLElement(XmlElement element)
        {
            switch (element.Name)
            {
            case "imgdir":
                WzSubProperty sub = new WzSubProperty(element.GetAttribute("name"));
                foreach (XmlElement subelement in element)
                {
                    sub.AddProperty(ParsePropertyFromXMLElement(subelement));
                }
                return(sub);

            case "canvas":
                WzCanvasProperty canvas = new WzCanvasProperty(element.GetAttribute("name"));
                if (!element.HasAttribute("basedata"))
                {
                    throw new NoBase64DataException("no base64 data in canvas element with name " + canvas.Name);
                }
                canvas.PngProperty = new WzPngProperty();
                MemoryStream pngstream = new MemoryStream(Convert.FromBase64String(element.GetAttribute("basedata")));
                canvas.PngProperty.SetPNG((Bitmap)Image.FromStream(pngstream, true, true));
                foreach (XmlElement subelement in element)
                {
                    canvas.AddProperty(ParsePropertyFromXMLElement(subelement));
                }
                return(canvas);

            case "int":
                WzIntProperty compressedInt = new WzIntProperty(element.GetAttribute("name"), int.Parse(element.GetAttribute("value"), formattingInfo));
                return(compressedInt);

            case "double":
                WzDoubleProperty doubleProp = new WzDoubleProperty(element.GetAttribute("name"), double.Parse(element.GetAttribute("value"), formattingInfo));
                return(doubleProp);

            case "null":
                WzNullProperty nullProp = new WzNullProperty(element.GetAttribute("name"));
                return(nullProp);

            case "sound":
                if (!element.HasAttribute("basedata") || !element.HasAttribute("basehead") || !element.HasAttribute("length"))
                {
                    throw new NoBase64DataException("no base64 data in sound element with name " + element.GetAttribute("name"));
                }
                WzSoundProperty sound = new WzSoundProperty(element.GetAttribute("name"),
                                                            int.Parse(element.GetAttribute("length")),
                                                            Convert.FromBase64String(element.GetAttribute("basehead")),
                                                            Convert.FromBase64String(element.GetAttribute("basedata")));
                return(sound);

            case "string":
                WzStringProperty stringProp = new WzStringProperty(element.GetAttribute("name"), element.GetAttribute("value"));
                return(stringProp);

            case "short":
                WzShortProperty shortProp = new WzShortProperty(element.GetAttribute("name"), short.Parse(element.GetAttribute("value"), formattingInfo));
                return(shortProp);

            case "long":
                WzLongProperty longProp = new WzLongProperty(element.GetAttribute("name"), long.Parse(element.GetAttribute("value"), formattingInfo));
                return(longProp);

            case "uol":
                WzUOLProperty uol = new WzUOLProperty(element.GetAttribute("name"), element.GetAttribute("value"));
                return(uol);

            case "vector":
                WzVectorProperty vector = new WzVectorProperty(element.GetAttribute("name"), new WzIntProperty("x", Convert.ToInt32(element.GetAttribute("x"))), new WzIntProperty("y", Convert.ToInt32(element.GetAttribute("y"))));
                return(vector);

            case "float":
                WzFloatProperty floatProp = new WzFloatProperty(element.GetAttribute("name"), float.Parse(element.GetAttribute("value"), formattingInfo));
                return(floatProp);

            case "extended":
                WzConvexProperty convex = new WzConvexProperty(element.GetAttribute("name"));
                foreach (XmlElement subelement in element)
                {
                    convex.AddProperty(ParsePropertyFromXMLElement(subelement));
                }
                return(convex);
            }
            throw new InvalidDataException("unknown XML prop " + element.Name);
        }
コード例 #8
0
 protected void WritePropertyToXML(TextWriter tw, string depth, WzImageProperty prop)
 {
     if (prop is WzCanvasProperty)
     {
         WzCanvasProperty property3 = (WzCanvasProperty)prop;
         if (ExportBase64Data)
         {
             MemoryStream stream = new MemoryStream();
             property3.PngProperty.GetPNG(false).Save(stream, System.Drawing.Imaging.ImageFormat.Png);
             byte[] pngbytes = stream.ToArray();
             stream.Close();
             tw.Write(string.Concat(new object[] { depth, "<canvas name=\"", XmlUtil.SanitizeText(property3.Name), "\" width=\"", property3.PngProperty.Width, "\" height=\"", property3.PngProperty.Height, "\" basedata=\"", Convert.ToBase64String(pngbytes), "\">" }) + lineBreak);
         }
         else
         {
             tw.Write(string.Concat(new object[] { depth, "<canvas name=\"", XmlUtil.SanitizeText(property3.Name), "\" width=\"", property3.PngProperty.Width, "\" height=\"", property3.PngProperty.Height, "\">" }) + lineBreak);
         }
         string newDepth = depth + indent;
         foreach (WzImageProperty property in property3.WzProperties)
         {
             WritePropertyToXML(tw, newDepth, property);
         }
         tw.Write(depth + "</canvas>" + lineBreak);
     }
     else if (prop is WzIntProperty)
     {
         WzIntProperty property4 = (WzIntProperty)prop;
         tw.Write(string.Concat(new object[] { depth, "<int name=\"", XmlUtil.SanitizeText(property4.Name), "\" value=\"", property4.Value, "\"/>" }) + lineBreak);
     }
     else if (prop is WzDoubleProperty)
     {
         WzDoubleProperty property5 = (WzDoubleProperty)prop;
         tw.Write(string.Concat(new object[] { depth, "<double name=\"", XmlUtil.SanitizeText(property5.Name), "\" value=\"", property5.Value, "\"/>" }) + lineBreak);
     }
     else if (prop is WzNullProperty)
     {
         WzNullProperty property6 = (WzNullProperty)prop;
         tw.Write(depth + "<null name=\"" + XmlUtil.SanitizeText(property6.Name) + "\"/>" + lineBreak);
     }
     else if (prop is WzSoundProperty)
     {
         WzSoundProperty property7 = (WzSoundProperty)prop;
         if (ExportBase64Data)
         {
             tw.Write(string.Concat(new object[] { depth, "<sound name=\"", XmlUtil.SanitizeText(property7.Name), "\" length=\"", property7.Length.ToString(), "\" basehead=\"", Convert.ToBase64String(property7.Header), "\" basedata=\"", Convert.ToBase64String(property7.GetBytes(false)), "\"/>" }) + lineBreak);
         }
         else
         {
             tw.Write(depth + "<sound name=\"" + XmlUtil.SanitizeText(property7.Name) + "\"/>" + lineBreak);
         }
     }
     else if (prop is WzStringProperty)
     {
         WzStringProperty property8 = (WzStringProperty)prop;
         string           str       = XmlUtil.SanitizeText(property8.Value);
         tw.Write(depth + "<string name=\"" + XmlUtil.SanitizeText(property8.Name) + "\" value=\"" + str + "\"/>" + lineBreak);
     }
     else if (prop is WzSubProperty)
     {
         WzSubProperty property9 = (WzSubProperty)prop;
         tw.Write(depth + "<imgdir name=\"" + XmlUtil.SanitizeText(property9.Name) + "\">" + lineBreak);
         string newDepth = depth + indent;
         foreach (WzImageProperty property in property9.WzProperties)
         {
             WritePropertyToXML(tw, newDepth, property);
         }
         tw.Write(depth + "</imgdir>" + lineBreak);
     }
     else if (prop is WzShortProperty)
     {
         WzShortProperty property10 = (WzShortProperty)prop;
         tw.Write(string.Concat(new object[] { depth, "<short name=\"", XmlUtil.SanitizeText(property10.Name), "\" value=\"", property10.Value, "\"/>" }) + lineBreak);
     }
     else if (prop is WzLongProperty)
     {
         WzLongProperty long_prop = (WzLongProperty)prop;
         tw.Write(string.Concat(new object[] { depth, "<long name=\"", XmlUtil.SanitizeText(long_prop.Name), "\" value=\"", long_prop.Value, "\"/>" }) + lineBreak);
     }
     else if (prop is WzUOLProperty)
     {
         WzUOLProperty property11 = (WzUOLProperty)prop;
         tw.Write(depth + "<uol name=\"" + property11.Name + "\" value=\"" + XmlUtil.SanitizeText(property11.Value) + "\"/>" + lineBreak);
     }
     else if (prop is WzVectorProperty)
     {
         WzVectorProperty property12 = (WzVectorProperty)prop;
         tw.Write(string.Concat(new object[] { depth, "<vector name=\"", XmlUtil.SanitizeText(property12.Name), "\" x=\"", property12.X.Value, "\" y=\"", property12.Y.Value, "\"/>" }) + lineBreak);
     }
     else if (prop is WzFloatProperty)
     {
         WzFloatProperty property13 = (WzFloatProperty)prop;
         string          str2       = Convert.ToString(property13.Value, formattingInfo);
         if (!str2.Contains("."))
         {
             str2 = str2 + ".0";
         }
         tw.Write(depth + "<float name=\"" + XmlUtil.SanitizeText(property13.Name) + "\" value=\"" + str2 + "\"/>" + lineBreak);
     }
     else if (prop is WzConvexProperty)
     {
         tw.Write(depth + "<extended name=\"" + XmlUtil.SanitizeText(prop.Name) + "\">" + lineBreak);
         WzConvexProperty property14 = (WzConvexProperty)prop;
         string           newDepth   = depth + indent;
         foreach (WzImageProperty property in property14.WzProperties)
         {
             WritePropertyToXML(tw, newDepth, property);
         }
         tw.Write(depth + "</extended>" + lineBreak);
     }
 }
コード例 #9
0
ファイル: AddChangeForm.cs プロジェクト: odasm/HaRepacker
        private void button1_Click(object sender, EventArgs e)
        {
            if (method == 0)
            {
                switch (data.GetType().Name)
                {
                case "WzDirectory":
                    ((WzDirectory)data).Name = textBox1.Text;
                    break;

                case "WzImage":
                    ((WzImage)data).Name    = textBox1.Text;
                    ((WzImage)data).changed = true;
                    tree.Text = textBox1.Text;
                    Close();
                    return;

                case "WzSubProperty":
                    ((WzSubProperty)data).Name = textBox1.Text;
                    break;

                case "WzCompressedIntProperty":
                    ((WzCompressedIntProperty)data).Name  = textBox1.Text;
                    ((WzCompressedIntProperty)data).Value = Convert.ToInt32(textBox2.Text);
                    break;

                case "WzCanvasProperty":
                    if (((WzCanvasProperty)data).PngProperty == null)
                    {
                        ((WzCanvasProperty)data).PngProperty = new WzPngProperty();
                    }
                    ((WzCanvasProperty)data).PngProperty.Name   = textBox1.Text;
                    ((WzCanvasProperty)data).PngProperty.Height = pictureBox1.Image.Height;
                    ((WzCanvasProperty)data).PngProperty.Width  = pictureBox1.Image.Width;
                    ((WzCanvasProperty)data).PngProperty.PNG    = (Bitmap)pictureBox1.Image;
                    break;

                case "WzVectorProperty":
                    ((WzVectorProperty)data).Name    = textBox1.Text;
                    ((WzVectorProperty)data).X.Value = Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[0]);
                    ((WzVectorProperty)data).Y.Value = Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[1]);
                    break;

                case "WzStringProperty":
                    ((WzStringProperty)data).Name  = textBox1.Text;
                    ((WzStringProperty)data).Value = textBox2.Text;
                    break;

                case "WzUOLProperty":
                    ((WzUOLProperty)data).Name  = textBox1.Text;
                    ((WzUOLProperty)data).Value = textBox2.Text;
                    break;

                case "WzDoubleProperty":
                    ((WzDoubleProperty)data).Name  = textBox1.Text;
                    ((WzDoubleProperty)data).Value = Convert.ToDouble(textBox2.Text);
                    break;

                case "WzByteFloatProperty":
                    ((WzByteFloatProperty)data).Name  = textBox1.Text;
                    ((WzByteFloatProperty)data).Value = Convert.ToSingle(textBox2.Text);
                    break;

                case "WzSoundProperty":
                    ((WzSoundProperty)data).Name = textBox1.Text;
                    FileStream readmp3 = File.OpenRead(textBox2.Text);
                    byte[]     mpd     = new byte[readmp3.Length];
                    readmp3.Read(mpd, 0, (int)readmp3.Length);
                    ((WzSoundProperty)data).SoundData = mpd;
                    readmp3.Close();
                    break;

                case "WzConvexProperty":
                    ((WzConvexProperty)data).Name = textBox1.Text;
                    break;

                case "WzUnsignedShortProperty":
                    ((WzUnsignedShortProperty)data).Name  = textBox1.Text;
                    ((WzUnsignedShortProperty)data).Value = Convert.ToUInt16(textBox2.Text);
                    break;

                default:
                    break;
                }
                tree.Text = textBox1.Text;
                ((IWzImageProperty)data).ParentImage.changed = true;
                Close();
            }
            else if (method == 1)
            {
                switch (data.GetType().Name)
                {
                case "WzDirectory":
                    switch (comboBox1.SelectedIndex)
                    {
                    case 0:
                        WzDirectory dir = new WzDirectory(textBox1.Text);
                        ((WzDirectory)data).AddDirectory(dir);
                        tree.Nodes.Add(textBox1.Text).Tag = dir;
                        break;

                    case 1:
                        WzImage img = new WzImage(textBox1.Text);
                        ((WzDirectory)data).AddImage(img);
                        tree.Nodes.Add(textBox1.Text).Tag = img;
                        img.changed = true;
                        break;
                    }
                    Close();
                    return;

                    break;

                case "WzImage":
                    switch (comboBox1.SelectedIndex)
                    {
                    case 0:
                        WzCompressedIntProperty integer = new WzCompressedIntProperty(textBox1.Text, Convert.ToInt32(textBox2.Text));
                        ((WzImage)data).AddProperty(integer);
                        tree.Nodes.Add(textBox1.Text).Tag = integer;
                        break;

                    case 1:
                        WzCanvasProperty png = new WzCanvasProperty(textBox1.Text);
                        (png.PngProperty = new WzPngProperty()).PNG = (Bitmap)pictureBox1.Image;
                        png.PngProperty.Height = pictureBox1.Image.Height;
                        png.PngProperty.Width  = pictureBox1.Image.Width;
                        ((WzImage)data).AddProperty(png);
                        tree.Nodes.Add(textBox1.Text).Tag = png;
                        break;

                    case 2:
                        WzVectorProperty vector = new WzVectorProperty(textBox1.Text, new WzCompressedIntProperty("X", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[0])), new WzCompressedIntProperty("Y", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[1])));
                        ((WzImage)data).AddProperty(vector);
                        tree.Nodes.Add(textBox1.Text).Tag = vector;
                        break;

                    case 3:
                        WzStringProperty str = new WzStringProperty(textBox1.Text, textBox2.Text);
                        ((WzImage)data).AddProperty(str);
                        tree.Nodes.Add(textBox1.Text).Tag = str;
                        break;

                    case 4:
                        WzUOLProperty uol = new WzUOLProperty(textBox1.Text, textBox2.Text);
                        ((WzImage)data).AddProperty(uol);
                        tree.Nodes.Add(textBox1.Text).Tag = uol;
                        break;

                    case 5:
                        WzDoubleProperty dou = new WzDoubleProperty(textBox1.Text, Convert.ToDouble(textBox2.Text));
                        ((WzImage)data).AddProperty(dou);
                        tree.Nodes.Add(textBox1.Text).Tag = dou;
                        break;

                    case 6:
                        WzByteFloatProperty flo = new WzByteFloatProperty(textBox1.Text, Convert.ToSingle(textBox2.Text));
                        ((WzImage)data).AddProperty(flo);
                        tree.Nodes.Add(textBox1.Text).Tag = flo;
                        break;

                    case 7:
                        WzSubProperty sub = new WzSubProperty(textBox1.Text);
                        ((WzImage)data).AddProperty(sub);
                        tree.Nodes.Add(textBox1.Text).Tag = sub;
                        break;

                    case 8:
                        WzSoundProperty mps       = new WzSoundProperty(textBox1.Text);
                        FileStream      readsound = File.OpenRead(textBox2.Text);
                        byte[]          mpdata    = new byte[readsound.Length];
                        readsound.Read(mpdata, 0, (int)readsound.Length);
                        mps.SoundData = mpdata;
                        ((WzImage)data).AddProperty(mps);
                        tree.Nodes.Add(textBox1.Text).Tag = mps;
                        readsound.Close();
                        break;

                    case 9:
                        WzConvexProperty convex = new WzConvexProperty(textBox1.Text);
                        ((WzImage)data).AddProperty(convex);
                        tree.Nodes.Add(textBox1.Text).Tag = convex;
                        break;

                    case 10:
                        WzUnsignedShortProperty us = new WzUnsignedShortProperty(textBox1.Text, Convert.ToUInt16(textBox2.Text));
                        ((WzImage)data).AddProperty(us);
                        tree.Nodes.Add(textBox1.Text).Tag = us;
                        break;

                    default:
                        break;
                    }
                    break;

                case "WzSubProperty":
                    switch (comboBox1.SelectedIndex)
                    {
                    case 0:
                        WzCompressedIntProperty integer = new WzCompressedIntProperty(textBox1.Text, Convert.ToInt32(textBox2.Text));
                        ((WzSubProperty)data).AddProperty(integer);
                        tree.Nodes.Add(textBox1.Text).Tag = integer;
                        break;

                    case 1:
                        WzCanvasProperty png = new WzCanvasProperty(textBox1.Text);
                        (png.PngProperty = new WzPngProperty()).PNG = (Bitmap)pictureBox1.Image;
                        png.PngProperty.Height = pictureBox1.Image.Height;
                        png.PngProperty.Width  = pictureBox1.Image.Width;
                        ((WzSubProperty)data).AddProperty(png);
                        tree.Nodes.Add(textBox1.Text).Tag = png;
                        break;

                    case 2:
                        WzVectorProperty vector = new WzVectorProperty(textBox1.Text, new WzCompressedIntProperty("X", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[0])), new WzCompressedIntProperty("Y", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[1])));
                        ((WzSubProperty)data).AddProperty(vector);
                        tree.Nodes.Add(textBox1.Text).Tag = vector;
                        break;

                    case 3:
                        WzStringProperty str = new WzStringProperty(textBox1.Text, textBox2.Text);
                        ((WzSubProperty)data).AddProperty(str);
                        tree.Nodes.Add(textBox1.Text).Tag = str;
                        break;

                    case 4:
                        WzUOLProperty uol = new WzUOLProperty(textBox1.Text, textBox2.Text);
                        ((WzSubProperty)data).AddProperty(uol);
                        tree.Nodes.Add(textBox1.Text).Tag = uol;
                        break;

                    case 5:
                        WzDoubleProperty dou = new WzDoubleProperty(textBox1.Text, Convert.ToDouble(textBox2.Text));
                        ((WzSubProperty)data).AddProperty(dou);
                        tree.Nodes.Add(textBox1.Text).Tag = dou;
                        break;

                    case 6:
                        WzByteFloatProperty flo = new WzByteFloatProperty(textBox1.Text, Convert.ToSingle(textBox2.Text));
                        ((WzSubProperty)data).AddProperty(flo);
                        tree.Nodes.Add(textBox1.Text).Tag = flo;
                        break;

                    case 7:
                        WzSubProperty sub = new WzSubProperty(textBox1.Text);
                        ((WzSubProperty)data).AddProperty(sub);
                        tree.Nodes.Add(textBox1.Text).Tag = sub;
                        break;

                    case 8:
                        WzSoundProperty mps       = new WzSoundProperty(textBox1.Text);
                        FileStream      readsound = File.OpenRead(textBox2.Text);
                        byte[]          mpdata    = new byte[readsound.Length];
                        readsound.Read(mpdata, 0, (int)readsound.Length);
                        mps.SoundData = mpdata;
                        ((WzSubProperty)data).AddProperty(mps);
                        tree.Nodes.Add(textBox1.Text).Tag = mps;
                        readsound.Close();
                        break;

                    case 9:
                        WzConvexProperty convex = new WzConvexProperty(textBox1.Text);
                        ((WzSubProperty)data).AddProperty(convex);
                        tree.Nodes.Add(textBox1.Text).Tag = convex;
                        break;

                    case 10:
                        WzUnsignedShortProperty us = new WzUnsignedShortProperty(textBox1.Text, Convert.ToUInt16(textBox2.Text));
                        ((WzSubProperty)data).AddProperty(us);
                        tree.Nodes.Add(textBox1.Text).Tag = us;
                        break;

                    default:
                        break;
                    }
                    break;

                case "WzCanvasProperty":
                    WzCanvasProperty canvas = (WzCanvasProperty)data;
                    switch (comboBox1.SelectedIndex)
                    {
                    case 0:
                        WzCompressedIntProperty integer = new WzCompressedIntProperty(textBox1.Text, Convert.ToInt32(textBox2.Text));
                        canvas.AddProperty(integer);
                        tree.Nodes.Add(textBox1.Text).Tag = integer;
                        break;

                    case 1:
                        WzCanvasProperty png = new WzCanvasProperty(textBox1.Text);
                        png.PngProperty.PNG    = (Bitmap)pictureBox1.Image;
                        png.PngProperty.Height = pictureBox1.Image.Height;
                        png.PngProperty.Width  = pictureBox1.Image.Width;
                        canvas.AddProperty(png);
                        tree.Nodes.Add(textBox1.Text).Tag = png;
                        break;

                    case 2:
                        WzVectorProperty vector = new WzVectorProperty(textBox1.Text, new WzCompressedIntProperty("X", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[0])), new WzCompressedIntProperty("Y", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[1])));
                        canvas.AddProperty(vector);
                        tree.Nodes.Add(textBox1.Text).Tag = vector;
                        break;

                    case 3:
                        WzStringProperty str = new WzStringProperty(textBox1.Text, textBox2.Text);
                        canvas.AddProperty(str);
                        tree.Nodes.Add(textBox1.Text).Tag = str;
                        break;

                    case 4:
                        WzUOLProperty uol = new WzUOLProperty(textBox1.Text, textBox2.Text);
                        canvas.AddProperty(uol);
                        tree.Nodes.Add(textBox1.Text).Tag = uol;
                        break;

                    case 5:
                        WzDoubleProperty dou = new WzDoubleProperty(textBox1.Text, Convert.ToDouble(textBox2.Text));
                        canvas.AddProperty(dou);
                        tree.Nodes.Add(textBox1.Text).Tag = dou;
                        break;

                    case 6:
                        WzByteFloatProperty flo = new WzByteFloatProperty(textBox1.Text, Convert.ToSingle(textBox2.Text));
                        canvas.AddProperty(flo);
                        tree.Nodes.Add(textBox1.Text).Tag = flo;
                        break;

                    case 7:
                        WzSubProperty sub = new WzSubProperty(textBox1.Text);
                        canvas.AddProperty(sub);
                        tree.Nodes.Add(textBox1.Text).Tag = sub;
                        break;

                    case 8:
                        WzSoundProperty mps       = new WzSoundProperty(textBox1.Text);
                        FileStream      readsound = File.OpenRead(textBox2.Text);
                        byte[]          mpdata    = new byte[readsound.Length];
                        readsound.Read(mpdata, 0, (int)readsound.Length);
                        mps.SoundData = mpdata;
                        canvas.AddProperty(mps);
                        tree.Nodes.Add(textBox1.Text).Tag = mps;
                        readsound.Close();
                        break;

                    case 9:
                        WzConvexProperty convex = new WzConvexProperty(textBox1.Text);
                        canvas.AddProperty(convex);
                        tree.Nodes.Add(textBox1.Text).Tag = convex;
                        break;

                    case 10:
                        WzUnsignedShortProperty us = new WzUnsignedShortProperty(textBox1.Text, Convert.ToUInt16(textBox2.Text));
                        canvas.AddProperty(us);
                        tree.Nodes.Add(textBox1.Text).Tag = us;
                        break;

                    default:
                        break;
                    }
                    break;

                case "WzConvexProperty":
                    WzExtendedProperty ext = new WzExtendedProperty(textBox1.Text);
                    switch (comboBox1.SelectedIndex)
                    {
                    case 0:
                        WzCompressedIntProperty integer = new WzCompressedIntProperty(textBox1.Text, Convert.ToInt32(textBox2.Text));
                        ext.ExtendedProperty = integer;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = integer;
                        break;

                    case 1:
                        WzCanvasProperty png = new WzCanvasProperty(textBox1.Text);
                        (png.PngProperty = new WzPngProperty()).PNG = (Bitmap)pictureBox1.Image;
                        png.PngProperty.Height = pictureBox1.Image.Height;
                        png.PngProperty.Width  = pictureBox1.Image.Width;
                        ext.ExtendedProperty   = png;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = png;
                        break;

                    case 2:
                        WzVectorProperty vector = new WzVectorProperty(textBox1.Text, new WzCompressedIntProperty("X", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[0])), new WzCompressedIntProperty("Y", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[1])));
                        ext.ExtendedProperty = vector;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = vector;
                        break;

                    case 3:
                        WzStringProperty str = new WzStringProperty(textBox1.Text, textBox2.Text);
                        ext.ExtendedProperty = str;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = str;
                        break;

                    case 4:
                        WzUOLProperty uol = new WzUOLProperty(textBox1.Text, textBox2.Text);
                        ext.ExtendedProperty = uol;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = uol;
                        break;

                    case 5:
                        WzDoubleProperty dou = new WzDoubleProperty(textBox1.Text, Convert.ToDouble(textBox2.Text));
                        ext.ExtendedProperty = dou;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = dou;
                        break;

                    case 6:
                        WzByteFloatProperty flo = new WzByteFloatProperty(textBox1.Text, Convert.ToSingle(textBox2.Text));
                        ext.ExtendedProperty = flo;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = flo;
                        break;

                    case 7:
                        WzSubProperty sub = new WzSubProperty(textBox1.Text);
                        ext.ExtendedProperty = sub;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = sub;
                        break;

                    case 8:
                        WzSoundProperty mps       = new WzSoundProperty(textBox1.Text);
                        FileStream      readsound = File.OpenRead(textBox2.Text);
                        byte[]          mpdata    = new byte[readsound.Length];
                        readsound.Read(mpdata, 0, (int)readsound.Length);
                        mps.SoundData        = mpdata;
                        ext.ExtendedProperty = mps;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = mps;
                        readsound.Close();
                        break;

                    case 9:
                        WzConvexProperty convex = new WzConvexProperty(textBox1.Text);
                        ext.ExtendedProperty = convex;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = convex;
                        break;

                    case 10:
                        WzUnsignedShortProperty us = new WzUnsignedShortProperty(textBox1.Text, Convert.ToUInt16(textBox2.Text));
                        ext.ExtendedProperty = us;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = us;
                        break;

                    default:
                        break;
                    }
                    break;
                }
                if (data is WzImage)
                {
                    ((WzImage)data).changed = true;
                }
                else
                {
                    ((IWzImageProperty)data).ParentImage.changed = true;
                }
                Close();
            }
        }
コード例 #10
0
        internal static IExtended ExtractMore(WzBinaryReader reader, uint offset, int eob, string name, string iname, IWzObject parent, WzImage imgParent)
        {
            if (iname == "")
            {
                iname = reader.ReadString();
            }
            switch (iname)
            {
            case "Property":
                WzSubProperty subProp = new WzSubProperty(name)
                {
                    Parent = parent
                };
                reader.BaseStream.Position += 2;
                subProp.AddProperties(IWzImageProperty.ParsePropertyList(offset, reader, subProp, imgParent));
                return(subProp);

            case "Canvas":
                WzCanvasProperty canvasProp = new WzCanvasProperty(name)
                {
                    Parent = parent
                };
                reader.BaseStream.Position++;
                if (reader.ReadByte() == 1)
                {
                    reader.BaseStream.Position += 2;
                    canvasProp.AddProperties(IWzImageProperty.ParsePropertyList(offset, reader, canvasProp, imgParent));
                }
                canvasProp.PngProperty = new WzPngProperty(reader, imgParent.parseEverything)
                {
                    Parent = canvasProp
                };
                return(canvasProp);

            case "Shape2D#Vector2D":
                WzVectorProperty vecProp = new WzVectorProperty(name)
                {
                    Parent = parent
                };
                vecProp.X = new WzCompressedIntProperty("X", reader.ReadCompressedInt())
                {
                    Parent = vecProp
                };
                vecProp.Y = new WzCompressedIntProperty("Y", reader.ReadCompressedInt())
                {
                    Parent = vecProp
                };
                return(vecProp);

            case "Shape2D#Convex2D":
                WzConvexProperty convexProp = new WzConvexProperty(name)
                {
                    Parent = parent
                };
                int convexEntryCount = reader.ReadCompressedInt();
                convexProp.WzProperties.Capacity = convexEntryCount;     //performance thing
                for (int i = 0; i < convexEntryCount; i++)
                {
                    convexProp.AddProperty(ParseExtendedProp(reader, offset, 0, name, convexProp, imgParent));
                }
                return(convexProp);

            case "Sound_DX8":
                WzSoundProperty soundProp = new WzSoundProperty(name, reader, imgParent.parseEverything)
                {
                    Parent = parent
                };
                return(soundProp);

            case "UOL":
                reader.BaseStream.Position++;
                switch (reader.ReadByte())
                {
                case 0:
                    return(new WzUOLProperty(name, reader.ReadString())
                    {
                        Parent = parent
                    });

                case 1:
                    return(new WzUOLProperty(name, reader.ReadStringAtOffset(offset + reader.ReadInt32()))
                    {
                        Parent = parent
                    });
                }
                throw new Exception("Unsupported UOL type");

            default:
                throw new Exception("Unknown iname: " + iname);
            }
        }
コード例 #11
0
ファイル: WZXML.cs プロジェクト: xnum/hasuite
 private static void DumpXML(TextWriter tw, string depth, List <IWzImageProperty> props)
 {
     foreach (IWzImageProperty property in props)
     {
         if (property != null)
         {
             if (property is WzCanvasProperty)
             {
                 WzCanvasProperty canvas = (WzCanvasProperty)property;
                 MemoryStream     stream = new MemoryStream();
                 canvas.PngProperty.GetPNG(false).Save(stream, System.Drawing.Imaging.ImageFormat.Png);
                 byte[] pngbytes = stream.ToArray();
                 stream.Close();
                 tw.WriteLine(string.Concat(new object[] { depth, "<canvas name=\"", canvas.Name, "\" width=\"", canvas.PngProperty.Width, "\" height=\"", canvas.PngProperty.Height, "\" basedata=\"", Convert.ToBase64String(pngbytes), "\">" }));
                 DumpXML(tw, depth + indent, canvas.WzProperties);
                 tw.WriteLine(depth + "</canvas>");
             }
             else if (property is WzCompressedIntProperty)
             {
                 WzCompressedIntProperty compressedInt = (WzCompressedIntProperty)property;
                 tw.WriteLine(string.Concat(new object[] { depth, "<int name=\"", compressedInt.Name, "\" value=\"", compressedInt.Value, "\"/>" }));
             }
             else if (property is WzDoubleProperty)
             {
                 WzDoubleProperty doubleProp = (WzDoubleProperty)property;
                 tw.WriteLine(string.Concat(new object[] { depth, "<double name=\"", doubleProp.Name, "\" value=\"", doubleProp.Value.ToString(formattingInfo), "\"/>" }));
             }
             else if (property is WzNullProperty)
             {
                 WzNullProperty nullProp = (WzNullProperty)property;
                 tw.WriteLine(depth + "<null name=\"" + nullProp.Name + "\"/>");
             }
             else if (property is WzSoundProperty)
             {
                 WzSoundProperty sound = (WzSoundProperty)property;
                 tw.WriteLine(string.Concat(new object[] { depth, "<sound name=\"", sound.Name, "\" basedata=\"", Convert.ToBase64String(sound.GetBytes(false)), "\"/>" }));
             }
             else if (property is WzStringProperty)
             {
                 WzStringProperty stringProp = (WzStringProperty)property;
                 string           str        = stringProp.Value.Replace("<", "&lt;").Replace("&", "&amp;").Replace(">", "&gt;").Replace("'", "&apos;").Replace("\"", "&quot;");
                 tw.WriteLine(depth + "<string name=\"" + stringProp.Name + "\" value=\"" + str + "\"/>");
             }
             else if (property is WzSubProperty)
             {
                 WzSubProperty sub = (WzSubProperty)property;
                 tw.WriteLine(depth + "<imgdir name=\"" + sub.Name + "\">");
                 DumpXML(tw, depth + indent, sub.WzProperties);
                 tw.WriteLine(depth + "</imgdir>");
             }
             else if (property is WzUnsignedShortProperty)
             {
                 WzUnsignedShortProperty ushortProp = (WzUnsignedShortProperty)property;
                 tw.WriteLine(string.Concat(new object[] { depth, "<short name=\"", ushortProp.Name, "\" value=\"", ushortProp.Value.ToString(formattingInfo), "\"/>" }));
             }
             else if (property is WzUOLProperty)
             {
                 WzUOLProperty uol = (WzUOLProperty)property;
                 tw.WriteLine(depth + "<uol name=\"" + uol.Name + "\" value=\"" + uol.Value + "\"/>");
             }
             else if (property is WzVectorProperty)
             {
                 WzVectorProperty vector = (WzVectorProperty)property;
                 tw.WriteLine(string.Concat(new object[] { depth, "<vector name=\"", vector.Name, "\" x=\"", vector.X.Value, "\" y=\"", vector.Y.Value, "\"/>" }));
             }
             else if (property is WzByteFloatProperty)
             {
                 WzByteFloatProperty floatProp = (WzByteFloatProperty)property;
                 string str2 = floatProp.Value.ToString(formattingInfo);
                 if (!str2.Contains("."))
                 {
                     str2 = str2 + ".0";
                 }
                 tw.WriteLine(depth + "<float name=\"" + floatProp.Name + "\" value=\"" + str2 + "\"/>");
             }
             else if (property is WzConvexProperty)
             {
                 tw.WriteLine(depth + "<extended name=\"" + property.Name + "\">");
                 DumpXML(tw, depth + indent, ((WzConvexProperty)property).WzProperties);
                 tw.WriteLine(depth + "</extended>");
             }
         }
     }
 }
コード例 #12
0
ファイル: WZXML.cs プロジェクト: xnum/hasuite
 private static void ParseXML(XmlElement element, IPropertyContainer wo)
 {
     foreach (XmlNode node in element)
     {
         if (!(node is XmlElement))
         {
             continue;
         }
         XmlElement childElement = (XmlElement)node;
         if (childElement.Name == "imgdir")
         {
             WzSubProperty sub = new WzSubProperty(childElement.GetAttribute("name"));
             wo.AddProperty(sub);
             ParseXML(childElement, (IPropertyContainer)sub);
         }
         else if (childElement.Name == "canvas")
         {
             WzCanvasProperty canvas = new WzCanvasProperty(childElement.GetAttribute("name"));
             canvas.PngProperty = new WzPngProperty();
             MemoryStream pngstream = new MemoryStream(Convert.FromBase64String(childElement.GetAttribute("basedata")));
             canvas.PngProperty.SetPNG((Bitmap)Image.FromStream(pngstream, true, true));
             wo.AddProperty(canvas);
             ParseXML(childElement, (IPropertyContainer)canvas);
         }
         if (childElement.Name == "int")
         {
             WzCompressedIntProperty compressedInt = new WzCompressedIntProperty(childElement.GetAttribute("name"), int.Parse(childElement.GetAttribute("value"), formattingInfo));
             wo.AddProperty(compressedInt);
         }
         if (childElement.Name == "double")
         {
             WzDoubleProperty doubleProp = new WzDoubleProperty(childElement.GetAttribute("name"), double.Parse(childElement.GetAttribute("value"), formattingInfo));
             wo.AddProperty(doubleProp);
         }
         if (childElement.Name == "null")
         {
             WzNullProperty nullProp = new WzNullProperty(childElement.GetAttribute("name"));
             wo.AddProperty(nullProp);
         }
         if (childElement.Name == "sound")
         {
             WzSoundProperty sound = new WzSoundProperty(childElement.GetAttribute("name"));
             sound.SetDataUnsafe(Convert.FromBase64String(childElement.GetAttribute("basedata")));
             wo.AddProperty(sound);
         }
         if (childElement.Name == "string")
         {
             string           str        = childElement.GetAttribute("value").Replace("&lt;", "<").Replace("&amp;", "&").Replace("&gt;", ">").Replace("&apos;", "'").Replace("&quot;", "\"");
             WzStringProperty stringProp = new WzStringProperty(childElement.GetAttribute("name"), str);
             wo.AddProperty(stringProp);
         }
         if (childElement.Name == "short")
         {
             WzUnsignedShortProperty shortProp = new WzUnsignedShortProperty(childElement.GetAttribute("name"), ushort.Parse(childElement.GetAttribute("value"), formattingInfo));
             wo.AddProperty(shortProp);
         }
         if (childElement.Name == "uol")
         {
             WzUOLProperty uol = new WzUOLProperty(childElement.GetAttribute("name"), childElement.GetAttribute("value"));
             wo.AddProperty(uol);
         }
         if (childElement.Name == "vector")
         {
             WzVectorProperty vector = new WzVectorProperty(childElement.GetAttribute("name"), new WzCompressedIntProperty("x", Convert.ToInt32(childElement.GetAttribute("x"))), new WzCompressedIntProperty("y", Convert.ToInt32(childElement.GetAttribute("y"))));
             wo.AddProperty(vector);
         }
         if (childElement.Name == "float")
         {
             WzByteFloatProperty floatProp = new WzByteFloatProperty(childElement.GetAttribute("name"), float.Parse(childElement.GetAttribute("value"), formattingInfo));
             wo.AddProperty(floatProp);
         }
         if (childElement.Name == "extended")
         {
             WzConvexProperty convex = new WzConvexProperty(childElement.GetAttribute("name"));
             wo.AddProperty(convex);
             ParseXML(childElement, (IPropertyContainer)convex);
         }
     }
 }
コード例 #13
0
ファイル: ContextMenuManager.cs プロジェクト: xnum/hasuite
        public ContextMenuManager(/*HaRepackerMainPanel parent*/)
        {
            //this.parent = parent;
            SaveFile = new ToolStripMenuItem("Save...", Properties.Resources.disk, new EventHandler(
                                                 delegate(object sender, EventArgs e)
            {
                foreach (WzNode node in GetNodes(sender))
                {
                    HaRepackerMainPanel parent = ((HaRepackerMainPanel)node.TreeControl.Parent.Parent.Parent);
                    parent.CallSaveForm(node);
                }
            }));
            Remove = new ToolStripMenuItem("Remove", Properties.Resources.delete, new EventHandler(
                                               delegate(object sender, EventArgs e)
            {
                if (!Warning.Warn("Are you sure you want to remove this node?"))
                {
                    return;
                }
                foreach (WzNode node in GetNodes(sender))
                {
                    if (!(node.Tag is IWzFile))
                    {
                        node.Delete();
                    }
                }
            }));
            Unload = new ToolStripMenuItem("Unload", Properties.Resources.delete, new EventHandler(
                                               delegate(object sender, EventArgs e)
            {
                if (!Warning.Warn("Are you sure you want to unload this file?"))
                {
                    return;
                }
                foreach (WzNode node in GetNodes(sender))
                {
                    HaRepackerMainPanel parent = ((HaRepackerMainPanel)node.TreeControl.Parent.Parent.Parent);
                    parent.CallUnloadFile(node);
                }
            }));
            Reload = new ToolStripMenuItem("Reload", Properties.Resources.arrow_refresh, new EventHandler(
                                               delegate(object sender, EventArgs e)
            {
                if (!Warning.Warn("Are you sure you want to reload this file?"))
                {
                    return;
                }
                foreach (WzNode node in GetNodes(sender))
                {
                    HaRepackerMainPanel parent = ((HaRepackerMainPanel)node.TreeControl.Parent.Parent.Parent);
                    parent.CallReloadFile(node);
                }
            }));

            AddList = new ToolStripMenuItem("List Entry", null, new EventHandler(
                                                delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name;
                if (Interaction.NameInputBox.Show("Add List Entry", out name))
                {
                    nodes[0].AddObject(new WzListEntry(name));
                }
            }));
            AddImage = new ToolStripMenuItem("Image", null, new EventHandler(
                                                 delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name;
                if (Interaction.NameInputBox.Show("Add Image", out name))
                {
                    nodes[0].AddObject(new WzImage(name));
                }
            }));
            AddDirectory = new ToolStripMenuItem("Directory", null, new EventHandler(
                                                     delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name;
                if (Interaction.NameInputBox.Show("Add Directory", out name))
                {
                    nodes[0].AddObject(new WzDirectory(name));
                }
            }));
            AddByteFloat = new ToolStripMenuItem("Float", null, new EventHandler(
                                                     delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name; double?val;
                if (Interaction.FloatingPointInputBox.Show("Add Float", out name, out val))
                {
                    nodes[0].AddObject(new WzByteFloatProperty(name, (float)val));
                }
            }));
            AddCanvas = new ToolStripMenuItem("Canvas", null, new EventHandler(
                                                  delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name; string path;
                if (Interaction.BitmapInputBox.Show("Add Canvas", out name, out path))
                {
                    Bitmap bmp            = new Bitmap(path);
                    WzCanvasProperty prop = new WzCanvasProperty(name);
                    prop.PngProperty      = new WzPngProperty();
                    prop.PngProperty.SetPNG(bmp);
                    nodes[0].AddObject(new WzCanvasProperty(name));
                }
            }));
            AddInt = new ToolStripMenuItem("Int", null, new EventHandler(
                                               delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name; int?val;
                if (Interaction.IntInputBox.Show("Add Int", out name, out val))
                {
                    nodes[0].AddObject(new WzCompressedIntProperty(name, (int)val));
                }
            }));
            AddConvex = new ToolStripMenuItem("Convex", null, new EventHandler(
                                                  delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name;
                if (Interaction.NameInputBox.Show("Add Convex", out name))
                {
                    nodes[0].AddObject(new WzConvexProperty(name));
                }
            }));
            AddDouble = new ToolStripMenuItem("Double", null, new EventHandler(
                                                  delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name; double?val;
                if (Interaction.FloatingPointInputBox.Show("Add Double", out name, out val))
                {
                    nodes[0].AddObject(new WzDoubleProperty(name, (double)val));
                }
            }));
            AddNull = new ToolStripMenuItem("Null", null, new EventHandler(
                                                delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name;
                if (Interaction.NameInputBox.Show("Add Null", out name))
                {
                    nodes[0].AddObject(new WzNullProperty(name));
                }
            }));
            AddSound = new ToolStripMenuItem("Sound", null, new EventHandler(
                                                 delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name, path;
                if (Interaction.SoundInputBox.Show("Add Sound", out name, out path))
                {
                    try { nodes[0].AddObject(WzSoundProperty.CreateCustomProperty(name, path)); }
                    catch (Exception ex) { MessageBox.Show("Exception caught while adding property: \"" + ex.Message + "\"", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }
                }
            }));
            AddString = new ToolStripMenuItem("String", null, new EventHandler(
                                                  delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name, value;
                if (Interaction.NameValueInputBox.Show("Add String", out name, out value))
                {
                    nodes[0].AddObject(new WzStringProperty(name, value));
                }
            }));
            AddSub = new ToolStripMenuItem("Sub", null, new EventHandler(
                                               delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name;
                if (Interaction.NameInputBox.Show("Add Sub", out name))
                {
                    nodes[0].AddObject(new WzSubProperty(name));
                }
            }));
            AddUshort = new ToolStripMenuItem("Short", null, new EventHandler(
                                                  delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name; int?val;
                if (Interaction.IntInputBox.Show("Add Unsigned Short", out name, out val))
                {
                    nodes[0].AddObject(new WzUnsignedShortProperty(name, (ushort)val));
                }
            }));
            AddUOL = new ToolStripMenuItem("UOL", null, new EventHandler(
                                               delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name, value;
                if (Interaction.NameValueInputBox.Show("Add UOL", out name, out value))
                {
                    nodes[0].AddObject(new WzUOLProperty(name, value));
                }
            }));
            AddVector = new ToolStripMenuItem("Vector", null, new EventHandler(
                                                  delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node"); return;
                }
                string name; Point?pt;
                if (Interaction.VectorInputBox.Show("Add Vector", out name, out pt))
                {
                    nodes[0].AddObject(new WzVectorProperty(name, new WzCompressedIntProperty("X", pt.Value.X), new WzCompressedIntProperty("Y", pt.Value.Y)));
                }
            }));

            AddConvexSubMenu = new ToolStripMenuItem("Add", Properties.Resources.add, AddVector);
            AddDirsSubMenu   = new ToolStripMenuItem("Add", Properties.Resources.add, AddDirectory, AddImage);
            AddPropsSubMenu  = new ToolStripMenuItem("Add", Properties.Resources.add, AddDirectory, AddCanvas, AddConvex, AddDouble, AddByteFloat, AddInt, AddNull, AddUshort, AddSound, AddString, AddSub, AddUOL, AddVector);
            AddListSubMenu   = new ToolStripMenuItem("Add", Properties.Resources.add, AddList);

            WzFileMenu = new ContextMenuStrip();
            WzFileMenu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, SaveFile, Unload, Reload });
            WzListFileMenu = new ContextMenuStrip();
            WzListFileMenu.Items.AddRange(new ToolStripItem[] { AddListSubMenu, SaveFile, Unload, Reload });
            WzDirectoryMenu = new ContextMenuStrip();
            WzDirectoryMenu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, /*export, import,*/ Remove });
            PropertyContainerMenu = new ContextMenuStrip();
            PropertyContainerMenu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, /*export, import,*/ Remove });
            MessageBox.Show(PropertyContainerMenu.Items.Count.ToString());
            PropertyMenu = new ContextMenuStrip();
            PropertyMenu.Items.AddRange(new ToolStripItem[] { /*export, import,*/ Remove });
            SubPropertyMenu = new ContextMenuStrip();
            SubPropertyMenu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, /*export, import,*/ Remove });
        }
コード例 #14
0
        internal static AWzImageProperty ExtractMore(WzBinaryReader pReader, uint pOffset, int pEndOfBlock, string pName, string pImageName, AWzObject pParent, WzImage pImgParent)
        {
            switch (pImageName)
            {
            case "Property":
                WzSubProperty subProp = new WzSubProperty(pName)
                {
                    Parent = pParent, ParentImage = pImgParent
                };
                pReader.BaseStream.Position += 2;
                subProp.AddProperties(ParsePropertyList(pOffset, pReader, subProp, pImgParent));
                return(subProp);

            case "Canvas":
                WzCanvasProperty canvasProp = new WzCanvasProperty(pName)
                {
                    Parent = pParent, ParentImage = pImgParent
                };
                pReader.BaseStream.Position++;
                if (pReader.ReadByte() == 1)
                {
                    pReader.BaseStream.Position += 2;
                    canvasProp.AddProperties(ParsePropertyList(pOffset, pReader, canvasProp, pImgParent));
                }
                canvasProp.PngProperty = new WzPngProperty(pReader)
                {
                    Parent = canvasProp, ParentImage = pImgParent
                };
                return(canvasProp);

            case "Shape2D#Vector2D":
                WzVectorProperty vecProp = new WzVectorProperty(pName)
                {
                    Parent = pParent, ParentImage = pImgParent
                };
                vecProp.X = new WzCompressedIntProperty("X", pReader.ReadCompressedInt())
                {
                    Parent = vecProp, ParentImage = pImgParent
                };
                vecProp.Y = new WzCompressedIntProperty("Y", pReader.ReadCompressedInt())
                {
                    Parent = vecProp, ParentImage = pImgParent
                };
                return(vecProp);

            case "Shape2D#Convex2D":
                WzConvexProperty convexProp = new WzConvexProperty(pName)
                {
                    Parent = pParent, ParentImage = pImgParent
                };
                int convexEntryCount = pReader.ReadCompressedInt();
                for (int i = 0; i < convexEntryCount; i++)
                {
                    AWzImageProperty imgProp = ParseExtendedProp(pReader, pOffset, 0, pName, convexProp, pImgParent);
                    if (imgProp != null)
                    {
                        convexProp.AddProperty(imgProp);
                    }
                }
                return(convexProp);

            case "Sound_DX8":
                WzSoundProperty soundProp = new WzSoundProperty(pName)
                {
                    Parent = pParent, ParentImage = pImgParent
                };
                soundProp.ParseSound(pReader);
                return(soundProp);

            case "UOL":
                pReader.BaseStream.Position++;
                byte b = pReader.ReadByte();
                switch (b)
                {
                case 0:
                    return(new WzUOLProperty(pName, pReader.ReadString())
                    {
                        Parent = pParent, ParentImage = pImgParent
                    });

                case 1:
                    return(new WzUOLProperty(pName, pReader.ReadStringAtOffset(pOffset + pReader.ReadInt32()))
                    {
                        Parent = pParent, ParentImage = pImgParent
                    });

                default:
                    throw new Exception("Unsupported UOL type: " + b);
                }

            default:
                throw new Exception("Unknown image name: " + pImageName);
            }
        }
コード例 #15
0
ファイル: MapSimulator.cs プロジェクト: xnum/hasuite
        public MapSimulator(Board mapBoard)
        {
            WzSoundProperty bgm = Program.InfoManager.BGMs[mapBoard.MapInfo.bgm];

            if (bgm != null)
            {
                audio = new WzMp3Streamer(bgm, true);
            }
            MapSimulator.mapCenter = mapBoard.CenterPoint;
            if (mapBoard.MapInfo.VR == null)
            {
                vr = new Rectangle(0, 0, mapBoard.MapSize.X, mapBoard.MapSize.Y);
            }
            else
            {
                vr = new Rectangle(mapBoard.MapInfo.VR.Value.X + mapCenter.X, mapBoard.MapInfo.VR.Value.Y + mapCenter.Y, mapBoard.MapInfo.VR.Value.Width, mapBoard.MapInfo.VR.Value.Height);
            }
            SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true);
            InitializeComponent();
            this.Width  = width;
            this.Height = height;
#if FULLSCREEN
            pParams.BackBufferWidth    = Math.Max(width, 1);
            pParams.BackBufferHeight   = Math.Max(height, 1);
            pParams.BackBufferFormat   = SurfaceFormat.Color;
            pParams.IsFullScreen       = false;
            pParams.DepthStencilFormat = DepthFormat.Depth24;
#else
            pParams.BackBufferWidth    = Math.Max(width, 1);
            pParams.BackBufferHeight   = Math.Max(height, 1);
            pParams.BackBufferFormat   = SurfaceFormat.Color;
            pParams.DepthStencilFormat = DepthFormat.Depth24;
            pParams.DeviceWindowHandle = Handle;
            pParams.IsFullScreen       = false;
#endif

/*            try
 *          {
 *              DxDevice = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, DeviceType.Hardware, Handle, pParams);
 *          }
 *          catch
 *          {
 *              DxDevice = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, DeviceType.NullReference, Handle, pParams);
 *          }*/
            try
            {
                GraphicsProfile profile = GraphicsProfile.Reach;
                if (GraphicsAdapter.DefaultAdapter.IsProfileSupported(GraphicsProfile.HiDef))
                {
                    profile = GraphicsProfile.HiDef;
                }
                else if (!GraphicsAdapter.DefaultAdapter.IsProfileSupported(GraphicsProfile.Reach))
                {
                    throw new NotSupportedException();
                }
                DxDevice = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, profile, pParams);
            }
            catch
            {
                HaRepackerLib.Warning.Error("Graphics adapter is not supported");
                Application.Exit();
            }
            graphicsDeviceService = new GraphicsDeviceService(DxDevice);
            this.minimap          = BoardItem.TextureFromBitmap(DxDevice, mapBoard.MiniMap);
            System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(1, 1);
            bmp.SetPixel(0, 0, System.Drawing.Color.White);
            pixel = BoardItem.TextureFromBitmap(DxDevice, bmp);

            //pixel = BoardItem.TextureFromBitmap(DxDevice, new System.Drawing.Bitmap(1, 1));
            contentMan  = new ContentManager(this);
            defaultFont = contentMan.Load <SpriteFont>("Arial");
            sprite      = new SpriteBatch(DxDevice);
            //character = new Character(400 + mapCenter.X, 300 + mapCenter.Y);
            //character.DoFly();
        }
コード例 #16
0
 // TODO: this is not deserializable due to missing type information
 protected void WritePropertyToJson(TextWriter tw, WzImageProperty prop, bool isArray = false)
 {
     tw.Write("\n");
     if (prop is WzCanvasProperty)
     {
         WzCanvasProperty property = (WzCanvasProperty)prop;
         if (!isArray)
         {
             tw.Write($"\"{XmlUtil.SanitizeText(property.Name)}\":");
         }
         if (ExportBase64Data)
         {
             MemoryStream stream = new MemoryStream();
             property.PngProperty.GetPNG(false).Save(stream, System.Drawing.Imaging.ImageFormat.Png);
             byte[] pngbytes = stream.ToArray();
             stream.Close();
             tw.Write($"{{" +
                      $"\"width\": {property.PngProperty.Width}, " +
                      $"\"height\": {property.PngProperty.Height}, " +
                      $"\"basedata\": {Convert.ToBase64String(pngbytes)}\",");
         }
         else
         {
             tw.Write($"{{" +
                      $"\"width\": {property.PngProperty.Width}, " +
                      $"\"height\": {property.PngProperty.Height},");
         }
         if (property.WzProperties.Count() > 0)
         {
             var last = property.WzProperties.Last();
             foreach (WzImageProperty p in property.WzProperties)
             {
                 WritePropertyToJson(tw, p);
                 if (!p.Equals(last))
                 {
                     tw.Write(",");
                 }
             }
         }
         tw.Write("}");
     }
     else if (prop is WzIntProperty)
     {
         WzIntProperty property = (WzIntProperty)prop;
         tw.Write($"\"{XmlUtil.SanitizeText(property.Name)}\": {property.Value}");
     }
     else if (prop is WzDoubleProperty)
     {
         WzDoubleProperty property = (WzDoubleProperty)prop;
         tw.Write($"\"{XmlUtil.SanitizeText(property.Name)}\": {property.Value}");
     }
     else if (prop is WzNullProperty)
     {
         WzNullProperty property = (WzNullProperty)prop;
         tw.Write($"\"{XmlUtil.SanitizeText(property.Name)}\": null");
     }
     else if (prop is WzSoundProperty)
     {
         WzSoundProperty property = (WzSoundProperty)prop;
         if (!isArray)
         {
             tw.Write($"\"{XmlUtil.SanitizeText(property.Name)}\":");
         }
         if (ExportBase64Data)
         {
             tw.Write($"{{" +
                      $"\"length\":\"{property.Length}\", " +
                      $"\"basehead\": \"{Convert.ToBase64String(property.Header)}\"" +
                      $"\"basedata\": \"{Convert.ToBase64String(property.GetBytes(false))}\"" +
                      $"}}");
         }
         else
         {
             tw.Write("{}");
         }
     }
     else if (prop is WzStringProperty)
     {
         WzStringProperty property = (WzStringProperty)prop;
         tw.Write($"\"{XmlUtil.SanitizeText(property.Name)}\": {JsonConvert.ToString(property.Value)}");
     }
     else if (prop is WzSubProperty)
     {
         WzSubProperty property = (WzSubProperty)prop;
         if (!isArray)
         {
             tw.Write($"\"{XmlUtil.SanitizeText(property.Name)}\":");
         }
         // This has the same problem as the convex property
         bool propertyIsArray = property.WzProperties.TrueForAll(x => { int num; return(int.TryParse(x.Name, out num)); });
         tw.Write(propertyIsArray ? "[" : "{");
         if (property.WzProperties.Count() > 0)
         {
             var last = property.WzProperties.Last();
             foreach (WzImageProperty p in property.WzProperties)
             {
                 bool isObject = p is WzConvexProperty || p is WzSubProperty || p is WzSoundProperty || p is WzCanvasProperty || p is WzVectorProperty;
                 if (propertyIsArray)
                 {
                     tw.Write($"{{\"index\":{p.Name}, \"item\":");
                     tw.Write(!isObject ? "{" : "");
                 }
                 WritePropertyToJson(tw, p, propertyIsArray);
                 if (propertyIsArray)
                 {
                     tw.Write(!isObject ? "}" : "");
                     tw.Write("}");
                 }
                 if (!p.Equals(last))
                 {
                     tw.Write(",");
                 }
             }
         }
         tw.Write(propertyIsArray ? "]" : "}");
     }
     else if (prop is WzShortProperty)
     {
         WzShortProperty property = (WzShortProperty)prop;
         tw.Write($"\"{XmlUtil.SanitizeText(property.Name)}\": {property.Value}");
     }
     else if (prop is WzLongProperty)
     {
         WzLongProperty property = (WzLongProperty)prop;
         tw.Write($"\"{XmlUtil.SanitizeText(property.Name)}\": {property.Value}");
     }
     else if (prop is WzUOLProperty)
     {
         WzUOLProperty property = (WzUOLProperty)prop;
         tw.Write($"\"{XmlUtil.SanitizeText(property.Name)}\": \"{property.Value}\"");
     }
     else if (prop is WzVectorProperty)
     {
         WzVectorProperty property = (WzVectorProperty)prop;
         if (!isArray)
         {
             tw.Write($"\"{XmlUtil.SanitizeText(property.Name)}\":");
         }
         tw.Write($"{{" +
                  $"\"x\": {property.X.Value}, " +
                  $"\"y\": {property.Y.Value}" +
                  $"}}");
     }
     else if (prop is WzFloatProperty)
     {
         WzFloatProperty property = (WzFloatProperty)prop;
         tw.Write($"\"{XmlUtil.SanitizeText(property.Name)}\": {property.Value * 1.0}");
     }
     else if (prop is WzConvexProperty)
     {
         WzConvexProperty property = (WzConvexProperty)prop;
         if (!isArray)
         {
             tw.Write($"\"{XmlUtil.SanitizeText(property.Name)}\":");
         }
         tw.Write("[");
         if (property.WzProperties.Count() > 0)
         {
             var last = property.WzProperties.Last();
             foreach (WzImageProperty p in property.WzProperties)
             {
                 bool isObject = p is WzConvexProperty || p is WzSubProperty || p is WzSoundProperty || p is WzCanvasProperty || p is WzVectorProperty;
                 tw.Write(isObject ? "" : "{");
                 WritePropertyToJson(tw, p, true);
                 tw.Write(isObject ? "" : "}");
                 if (!p.Equals(last))
                 {
                     tw.Write(",");
                 }
             }
         }
         tw.Write("]");
     }
 }