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; } }
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); }
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); }
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); } }
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); }
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++; } } } }
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); }
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); } }
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(); } }
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); } }
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("<", "<").Replace("&", "&").Replace(">", ">").Replace("'", "'").Replace("\"", """); 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>"); } } } }
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("<", "<").Replace("&", "&").Replace(">", ">").Replace("'", "'").Replace(""", "\""); 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); } } }
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 }); }
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); } }
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(); }
// 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("]"); } }