Example #1
0
        public Form1()
        {
            this.InitializeComponent();
            this.Resize += (sender, args) => this.doLayout(this.ClientRectangle);
            XmlReaderSettings settings = new XmlReaderSettings();

            settings.CloseInput = true;
            EntityStore.clearEntities();
            var fullpath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "entities2.xml");

            Debug.WriteLine(fullpath);
            if (File.Exists(fullpath))
            {
                EntityStore.LoadEntities(XmlReader.Create(File.Open(fullpath, FileMode.Open), settings));
                this.EntityBox.DataSource = EntityStore.getNames();
            }
            fullpath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "additions.xml");
            if (File.Exists(fullpath))
            {
                EntityStore.LoadEntities(XmlReader.Create(File.Open(fullpath, FileMode.Open), settings));
                this.EntityBox.DataSource = EntityStore.getNames();
            }
        }
Example #2
0
        private void LoadFileClick(object sender, EventArgs e)
        {
            FileDialog loadDialog = new OpenFileDialog();

            loadDialog.ShowDialog();
            if (loadDialog.FileName.Equals(""))
            {
                return;
            }
            XmlReaderSettings settings = new XmlReaderSettings();

            settings.CloseInput = true;
            if (!loadDialog.FileName.Equals(""))
            {
                if (loadDialog.FileName.EndsWith("entities2.xml"))
                {
                    var fileToLoad = XmlReader.Create(File.Open(loadDialog.FileName, FileMode.Open), settings);
                    EntityStore.LoadEntities(fileToLoad);
                    this.EntityBox.DataSource = EntityStore.getNames();
                }
                else if (loadDialog.FileName.EndsWith("animations.b"))
                {
                    AnimationBinaryFile file = new AnimationBinaryFile();
                    file.Deserialize(File.Open(loadDialog.FileName, FileMode.Open));
                    XmlWriterSettings mySettings = new XmlWriterSettings();
                    mySettings.CloseOutput        = true;
                    mySettings.Indent             = true;
                    mySettings.OmitXmlDeclaration = true;
                    mySettings.ConformanceLevel   = ConformanceLevel.Auto;
                    StreamReader reader =
                        new StreamReader(
                            File.Open(
                                Path.Combine(
                                    Path.GetDirectoryName(Application.ExecutablePath),
                                    "animations.animlist"),
                                FileMode.Open));
                    reader.ReadLine();
                    int a = 0;
                    foreach (var type2 in file.result.unknown1)
                    {
                        a++;

                        string filename = a + ".anm2";
                        if (!reader.EndOfStream)
                        {
                            filename = reader.ReadLine();
                        }
                        filename = Path.Combine(loadDialog.FileName.Replace(".b", "_unpacked"), filename);
                        Directory.CreateDirectory(Path.GetDirectoryName(filename));

                        XmlWriter writer = XmlWriter.Create(filename, mySettings);
                        writer.WriteStartElement("AnimatedActor");
                        writer.WriteWhitespace("\n\t");
                        writer.WriteStartElement("info");
                        writer.WriteAttributeString("NameHash", type2.unknown1.ToString());
                        writer.WriteAttributeString("BasePath", type2.unknown2);
                        writer.WriteAttributeString("DefaultAnimation", type2.unknown7);
                        writer.WriteEndElement();
                        writer.WriteWhitespace("\n\t");

                        writer.WriteStartElement("content");
                        writer.WriteWhitespace("\n\t\t");
                        writer.WriteStartElement("Spritesheets");
                        foreach (var type3 in type2.unknown3)
                        {
                            writer.WriteWhitespace("\n\t\t\t");
                            writer.WriteStartElement("Spritesheet");
                            writer.WriteAttributeString("Path", type3.unknown1.ToString());
                            writer.WriteAttributeString("Id", type3.unknown2);
                            writer.WriteEndElement();
                        }
                        writer.WriteWhitespace("\n\t\t");
                        writer.WriteEndElement();

                        writer.WriteWhitespace("\n\t\t");
                        writer.WriteStartElement("Layers");
                        foreach (var type4 in type2.unknown4)
                        {
                            writer.WriteWhitespace("\n\t\t\t");
                            writer.WriteStartElement("Layer");
                            writer.WriteAttributeString("Name", type4.unknown1.ToString());
                            writer.WriteAttributeString("Id", type4.unknown2.ToString());
                            writer.WriteAttributeString("SpritesheetId", type4.unknown3);
                            writer.WriteEndElement();
                        }
                        writer.WriteWhitespace("\n\t\t");
                        writer.WriteEndElement();



                        writer.WriteWhitespace("\n\t\t");
                        writer.WriteStartElement("Nulls");
                        foreach (var type5 in type2.unknown5)
                        {
                            writer.WriteWhitespace("\n\t\t\t");
                            writer.WriteStartElement("Null");
                            writer.WriteAttributeString("Id", type5.unknown1.ToString());
                            writer.WriteAttributeString("Name", type5.unknown2);
                            writer.WriteEndElement();
                        }

                        writer.WriteWhitespace("\n\t\t");
                        writer.WriteEndElement();

                        writer.WriteWhitespace("\n\t\t");
                        writer.WriteStartElement("Events");
                        foreach (var type6 in type2.unknown6)
                        {
                            writer.WriteWhitespace("\n\t\t\t");
                            writer.WriteStartElement("Event");
                            writer.WriteAttributeString("Id", type6.unknown1.ToString());
                            writer.WriteAttributeString("Name", type6.unknown2);
                            writer.WriteEndElement();
                        }
                        writer.WriteWhitespace("\n\t\t");
                        writer.WriteEndElement();

                        writer.WriteWhitespace("\n\t\t");
                        writer.WriteStartElement("Animations");
                        foreach (var type7 in type2.unknown8)
                        {
                            writer.WriteWhitespace("\n\t\t\t");
                            writer.WriteStartElement("Animation");
                            writer.WriteAttributeString("Name", type7.unknown1);
                            writer.WriteAttributeString("FrameNum", type7.unknown2.ToString());
                            writer.WriteAttributeString("Loop", type7.unknown3.ToString());
                            writer.WriteStartElement("RootAnimation");
                            foreach (var type8 in type7.unknown4)
                            {
                                writer.WriteWhitespace("\n\t\t\t\t");
                                writer.WriteStartElement("RootFrame");
                                writer.WriteAttributeString("XPosition", type8.unknown1.ToString());
                                writer.WriteAttributeString("YPosition", type8.unknown2.ToString());
                                writer.WriteAttributeString("Delay", type8.unknown3.ToString());
                                writer.WriteAttributeString("Visible", type8.unknown4.ToString());
                                writer.WriteAttributeString("XScale", type8.unknown5.ToString());
                                writer.WriteAttributeString("YScale", type8.unknown6.ToString());
                                writer.WriteAttributeString("RedTint", type8.unknown7.ToString());
                                writer.WriteAttributeString("GreenTint", type8.unknown8.ToString());
                                writer.WriteAttributeString("BlueTint", type8.unknown9.ToString());
                                writer.WriteAttributeString("AlphaTint", type8.unknown10.ToString());
                                writer.WriteAttributeString("RedOffset", type8.unknown11.ToString());
                                writer.WriteAttributeString("GreenOffset", type8.unknown12.ToString());
                                writer.WriteAttributeString("BlueOffset", type8.unknown13.ToString());
                                writer.WriteAttributeString("Rotation", type8.unknown14.ToString());
                                writer.WriteAttributeString("Interpolated", type8.unknown15.ToString());
                                writer.WriteEndElement();
                            }

                            writer.WriteWhitespace("\n\t\t\t");
                            writer.WriteEndElement();
                            writer.WriteWhitespace("\n\t\t\t");

                            writer.WriteStartElement("LayerAnimations");
                            foreach (var type9 in type7.unknown5)
                            {
                                writer.WriteWhitespace("\n\t\t\t\t");
                                writer.WriteStartElement("Layer");
                                writer.WriteAttributeString("LayerID", type9.unknown1.ToString());
                                writer.WriteAttributeString("Visible", type9.unknown2.ToString());
                                writer.WriteWhitespace("\n\t\t\t\t\t");
                                writer.WriteStartElement("KeyFrames");
                                foreach (var type10 in type9.unknown3)
                                {
                                    writer.WriteWhitespace("\n\t\t\t\t\t\t");
                                    writer.WriteStartElement("Frame");
                                    writer.WriteAttributeString("XPosition", type10.unknown1.ToString());
                                    writer.WriteAttributeString("YPosition", type10.unknown2.ToString());
                                    writer.WriteAttributeString("XPivot", type10.unknown3.ToString());
                                    writer.WriteAttributeString("YPivot", type10.unknown4.ToString());
                                    writer.WriteAttributeString("Width", type10.unknown5.ToString());
                                    writer.WriteAttributeString("Height", type10.unknown6.ToString());
                                    writer.WriteAttributeString("XScale", type10.unknown7.ToString());
                                    writer.WriteAttributeString("YScale", type10.unknown8.ToString());
                                    writer.WriteAttributeString("Delay", type10.unknown9.ToString());
                                    writer.WriteAttributeString("Visible", type10.unknown10.ToString());
                                    writer.WriteAttributeString("XCrop", type10.unknown11.ToString());
                                    writer.WriteAttributeString("YCrop", type10.unknown12.ToString());
                                    writer.WriteAttributeString("RedTint", type10.unknown13.ToString());
                                    writer.WriteAttributeString("GreenTint", type10.unknown14.ToString());
                                    writer.WriteAttributeString("BlueTint", type10.unknown15.ToString());
                                    writer.WriteAttributeString("AlphaTint", type10.unknown16.ToString());
                                    writer.WriteAttributeString("RedOffset", type10.unknown17.ToString());
                                    writer.WriteAttributeString("GreenOffset", type10.unknown18.ToString());
                                    writer.WriteAttributeString("BlueOffset", type10.unknown19.ToString());
                                    writer.WriteAttributeString("AlphaOffset", type10.unknown20.ToString());
                                    writer.WriteAttributeString("Rotation", type10.unknown21.ToString());
                                    writer.WriteAttributeString("Interpolated", type10.unknown21.ToString());
                                    writer.WriteEndElement();
                                }

                                writer.WriteWhitespace("\n\t\t\t\t\t");
                                writer.WriteEndElement();
                                writer.WriteWhitespace("\n\t\t\t\t");
                                writer.WriteEndElement();
                            }

                            writer.WriteWhitespace("\n\t\t\t");
                            writer.WriteEndElement();
                            foreach (var type11 in type7.unknown6)
                            {
                                writer.WriteWhitespace("\n\t\t\t");
                                writer.WriteStartElement("NullAnimations");
                                writer.WriteAttributeString("NullId", type7.unknown2.ToString());
                                writer.WriteAttributeString("Visible", type7.unknown3.ToString());
                                foreach (var type8 in type11.unknown3)
                                {
                                    writer.WriteWhitespace("\n\t\t\t\t");
                                    writer.WriteStartElement("NullFrame");
                                    writer.WriteAttributeString("XPosition", type8.unknown1.ToString());
                                    writer.WriteAttributeString("YPosition", type8.unknown2.ToString());
                                    writer.WriteAttributeString("Delay", type8.unknown3.ToString());
                                    writer.WriteAttributeString("Visible", type8.unknown4.ToString());
                                    writer.WriteAttributeString("XScale", type8.unknown5.ToString());
                                    writer.WriteAttributeString("YScale", type8.unknown6.ToString());
                                    writer.WriteAttributeString("RedTint", type8.unknown7.ToString());
                                    writer.WriteAttributeString("GreenTint", type8.unknown8.ToString());
                                    writer.WriteAttributeString("BlueTint", type8.unknown9.ToString());
                                    writer.WriteAttributeString("AlphaTint", type8.unknown10.ToString());
                                    writer.WriteAttributeString("RedOffset", type8.unknown11.ToString());
                                    writer.WriteAttributeString("GreenOffset", type8.unknown12.ToString());
                                    writer.WriteAttributeString("BlueOffset", type8.unknown13.ToString());
                                    writer.WriteAttributeString("Rotation", type8.unknown14.ToString());
                                    writer.WriteAttributeString("Interpolated", type8.unknown15.ToString());
                                    writer.WriteEndElement();
                                }
                                writer.WriteWhitespace("\n\t\t\t");
                                writer.WriteEndElement();
                            }


                            writer.WriteWhitespace("\n\t\t\t");
                            writer.WriteStartElement("Triggers");
                            foreach (var type11 in type7.unknown7)
                            {
                                writer.WriteWhitespace("\n\t\t\t\t");
                                writer.WriteStartElement("Trigger");
                                writer.WriteAttributeString("EventId", type11.unknown1.ToString());
                                writer.WriteAttributeString("AtFrame", type11.unknown2.ToString());
                                writer.WriteEndElement();
                            }
                            writer.WriteWhitespace("\n\t\t\t");
                            writer.WriteEndElement();
                            writer.WriteWhitespace("\n\t\t");
                            writer.WriteEndElement();
                        }
                        writer.WriteWhitespace("\n\t");
                        writer.WriteEndElement();
                        writer.WriteWhitespace("\n");
                        writer.WriteEndElement();
                        writer.Close();
                    }
                    reader.Close();
                }
                else
                {
                    loadedFile = new StageBinaryFile();
                    loadedFile.Deserialize(File.Open(loadDialog.FileName, FileMode.Open));


                    this.Text = "Binding of isaac: Rebirth level editor - "
                                + Path.GetFileNameWithoutExtension(loadDialog.FileName);
                    this.roomComboBox.DataSource = loadedFile.RoomNames;
                }
            }
        }