private void updateSpriteDataButton_Click(object sender, EventArgs e)
 {
     SpriteData.Update();
 }
Beispiel #2
0
            public SpriteDataEditor(List <LevelItem> sprites, SpriteData sd, LevelEditorControl EdControl)
            {
                this.SizeChanged += new EventHandler(this_SizeChanged);
                updating          = true;
                this.ColumnCount  = 3;
                //Talbe layout panel doesn't automatically create row or column styles
                this.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
                this.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
                this.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 20F));
                this.RowCount = sd.fields.Count;
                for (int l = 0; l < this.RowCount; l++)
                {
                    this.RowStyles.Add(new RowStyle(SizeType.Absolute));
                }
                this.AutoSize     = true;
                this.AutoSizeMode = AutoSizeMode.GrowAndShrink;

                this.sprites = sprites;
                foreach (LevelItem obj in sprites)
                {
                    if (obj is NSMBSprite)
                    {
                        s = obj as NSMBSprite;
                        break;
                    }
                }
                this.sd        = sd;
                this.Dock      = DockStyle.Fill;
                this.EdControl = EdControl;

                int row = 0;

                foreach (SpriteDataField v in sd.fields)
                {
                    Control c = CreateControlFor(v);
                    c.Anchor = AnchorStyles.Left | AnchorStyles.Right;
                    if (c is CheckBox || c is Label)
                    {
                        c.Font = new System.Drawing.Font(c.Font.FontFamily, c.Font.Size * 0.9F);
                        this.Controls.Add(c, 0, row);
                        this.RowStyles[row].Height = 25;
                        if (v.notes == "")
                        {
                            this.SetColumnSpan(c, 3);
                        }
                        else
                        {
                            NotesCtrl note = new NotesCtrl();
                            this.Controls.Add(note, 2, row);
                            note.Text = v.notes;
                        }
                    }
                    else
                    {
                        this.Controls.Add(c, 1, row);
                        Label l = new Label();
                        l.Text      = v.name;
                        l.Font      = new System.Drawing.Font(l.Font.FontFamily, l.Font.Size * 0.9F);
                        l.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
                        l.Anchor    = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom;
                        this.Controls.Add(l, 0, row);
                        this.RowStyles[row].Height = 25;
                        if (v.notes == "")
                        {
                            this.SetColumnSpan(c, 2);
                        }
                        else
                        {
                            NotesCtrl note = new NotesCtrl();
                            this.Controls.Add(note, 2, row);
                            note.Text = v.notes;
                        }
                    }
                    row++;
                    controls.Add(v, c);
                }
                updating = false;
            }
Beispiel #3
0
        public static SpriteData readFromStream(XmlReader xmlr)
        {
            SpriteData sd = new SpriteData();

            sd.spriteID = int.Parse(xmlr.GetAttribute("id"));
            //sd.spriteID = (int)ROM.GetClassIDFromTable(sd.spriteID);
            xmlr.ReadToFollowing("name");
            sd.name = xmlr.ReadElementContentAsString();
            xmlr.ReadToFollowing("category");
            sd.categoryID = int.Parse(xmlr.GetAttribute("id"));
            xmlr.ReadToFollowing("notes");
            sd.notes = xmlr.ReadElementContentAsString();

            string field = "field";

            if (sd.spriteID == 77 && Properties.Settings.Default.using_signboard_asm)
            {
                field = "fieldASM";
            }

            while (xmlr.ReadToNextSibling(field))
            {
                SpriteDataField f = new SpriteDataField();
                f.display = xmlr.GetAttribute("type");
                f.name    = xmlr.GetAttribute("name");
                f.notes   = xmlr.GetAttribute("notes");
                string nybbles = xmlr.GetAttribute("id");
                if (nybbles.Contains("-"))
                {
                    string[] nybbles2 = nybbles.Split('-');
                    f.startNibble = int.Parse(nybbles2[0]);
                    f.endNibble   = int.Parse(nybbles2[1]);
                }
                else
                {
                    f.startNibble = f.endNibble = int.Parse(nybbles);
                }
                string values = xmlr.GetAttribute("values");
                switch (f.display)
                {
                case "list":
                    string[] items = values.Split(',');
                    f.values  = new int[items.Length];
                    f.strings = new string[items.Length];

                    for (int j = 0; j < items.Length; j++)
                    {
                        string[] lulz = items[j].Split(new char[] { '=' });
                        f.values[j]  = Int32.Parse(lulz[0]);
                        f.strings[j] = lulz[1];
                    }
                    break;

                case "signedvalue":
                    if (values.Trim() == "")
                    {
                        f.data = 0;
                    }
                    else
                    {
                        f.data = Int32.Parse(values);
                    }
                    break;

                case "value":
                    if (values.Trim() == "")
                    {
                        f.data = 0;
                    }
                    else
                    {
                        f.data = Int32.Parse(values);
                    }
                    break;

                case "checkbox":
                    if (values.Trim() == "")
                    {
                        f.data = 1;
                    }
                    else
                    {
                        f.data = Int32.Parse(values);
                    }
                    break;

                    /*case "bitcheckbox":
                     *  if (values.Trim() == "")
                     *      f.data = 0;
                     *  else
                     *      f.data = Int32.Parse(values);
                     *  break;*/
                }
                sd.fields.Add(f);
            }

            return(sd);
        }
Beispiel #4
0
        public static void Load()
        {
            if (!ROM.isNSMBRom)
            {
                return;
            }

            //Delete existing
            datas.Clear();
            datas2.Clear();
            spriteNames.Clear();
            categoryIds.Clear();
            categories.Clear();
            spritesInCategory.Clear();

            datas  = new Dictionary <int, SpriteData>();
            datas2 = new Dictionary <int, SpriteData>();

            if (!File.Exists(path))
            {
                if (MessageBox.Show(LanguageManager.Get("SpriteData", "Prompt"), LanguageManager.Get("SpriteData", "PromptTitle"), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    Update();
                }
                else
                {
                    return;
                }
            }
            try
            {
                FileStream fs   = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
                XmlReader  xmlr = XmlReader.Create(fs);

                string rom_spritedata_path        = Path.Combine(Properties.Settings.Default.ROMFolder, "spritedata_patch.xml");
                bool   rom_spritedata_path_exists = File.Exists(rom_spritedata_path);
                string new_spritedata_path        = Path.Combine(directory, "new_spritedata.xml");
                bool   new_spritedata_path_exists = File.Exists(new_spritedata_path);

                xmlr.ReadToFollowing("category");
                do
                {
                    int id = int.Parse(xmlr.GetAttribute("id"));
                    categoryIds.Add(id);
                    categories.Add(xmlr.ReadElementContentAsString());
                    spritesInCategory.Add(id, new List <int>());
                } while (xmlr.ReadToNextSibling("category"));

                while (xmlr.ReadToFollowing("sprite"))
                {
                    bool       found_rom_data = false;
                    SpriteData d = readFromStream(xmlr);

                    //Check for custom spritedata
                    if (rom_spritedata_path_exists)
                    {
                        FileStream fs_rom   = new FileStream(rom_spritedata_path, FileMode.Open, FileAccess.Read, FileShare.Read);
                        XmlReader  xmlr_rom = XmlReader.Create(fs_rom);
                        while (xmlr_rom.ReadToFollowing("sprite"))
                        {
                            if (int.Parse(xmlr_rom.GetAttribute("id")) == d.spriteID)
                            {
                                d = readFromStream(xmlr_rom);
                                found_rom_data = true;
                            }
                        }
                        xmlr_rom.Close();
                        fs_rom.Close();
                    }

                    //Check for updated spritedata (forced patches)
                    if (!found_rom_data)
                    {
                        if (new_spritedata_path_exists)
                        {
                            FileStream fs_new   = new FileStream(new_spritedata_path, FileMode.Open, FileAccess.Read, FileShare.Read);
                            XmlReader  xmlr_new = XmlReader.Create(fs_new);
                            while (xmlr_new.ReadToFollowing("sprite"))
                            {
                                if (int.Parse(xmlr_new.GetAttribute("id")) == d.spriteID)
                                {
                                    d = readFromStream(xmlr_new);
                                }
                            }
                            xmlr_new.Close();
                            fs_new.Close();
                        }
                    }

                    spriteNames.Add(d.name);
                    spritesInCategory[d.categoryID].Add(d.spriteID);

                    if (d != null)
                    {
                        datas2.Add(d.spriteID, d);
                    }
                }

                for (int i = 0; i < datas2.Count; i++)
                {
                    int ActorID = ROM.GetClassIDFromTable(i);
                    datas.Add(i, datas2[ActorID]);
                }

                datas2.Clear();

                xmlr.Close();
                fs.Close();
            }
            catch (Exception e)
            {
                new ErrorMSGBox(LanguageManager.Get("SpriteData", "ErrorTitle"), LanguageManager.Get("SpriteData", "ErrorParse"), "", e.ToString()).ShowDialog();
                datas.Clear();
                datas2.Clear();
            }
        }
Beispiel #5
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            string langDir      = System.IO.Path.Combine(Application.StartupPath, "Languages");
            string langFileName = System.IO.Path.Combine(langDir, Properties.Settings.Default.LanguageFile + ".ini");

            if (System.IO.File.Exists(langFileName))
            {
                System.IO.StreamReader rdr = new StreamReader(langFileName);
                LanguageManager.Load(rdr.ReadToEnd().Split('\n'));
                rdr.Close();
            }
            else
            {
                MessageBox.Show("File " + langFileName + " could not be found, so the language has defaulted to English.");
                LanguageManager.Load(Properties.Resources.English.Split('\n'));
            }

            string[] args = Environment.GetCommandLineArgs();

            if (args.Length == 2)
            {
                Console.Out.WriteLine("Loading ROM: " + args[1]);

                NitroROMFilesystem fs = new NitroROMFilesystem(args[1]);
                ROM.load(fs);

                SpriteData.Load();
                if (Properties.Settings.Default.mdi)
                {
                    new MdiParentForm().Show();
                }
                else
                {
                    new LevelChooser().Show();
                }
            }
            else
            {
                new StartForm().Show();
            }

            Application.Run();

            //string[] args = Environment.GetCommandLineArgs();


            /*
             *
             * if(args.Length > 2 && args[2] == "asmpatch")
             * {
             *                  PatchMaker pm = new PatchMaker(ROM.romfile.Directory);
             *                  pm.restore();
             *                  pm.generatePatch();
             * }
             * else if(args.Length > 2 && args[2] == "getcodeaddr")
             * {
             *                  PatchMaker pm = new PatchMaker(ROM.romfile.Directory);
             *                  pm.restore();
             *  Console.Out.WriteLine(String.Format("{0:X8}", pm.getCodeAddr()));
             * }*/
        }
Beispiel #6
0
        public static void Load()
        {
            if (!ROM.isNSMBRom)
            {
                return;
            }

            //Delete existing
            datas.Clear();
            datas2.Clear();
            spriteNames.Clear();
            categoryIds.Clear();
            categories.Clear();
            spritesInCategory.Clear();

            datas  = new Dictionary <int, SpriteData>();
            datas2 = new Dictionary <int, SpriteData>();

            if (!File.Exists(path))
            {
                if (MessageBox.Show(LanguageManager.Get("SpriteData", "Prompt"), LanguageManager.Get("SpriteData", "PromptTitle"), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    Update();
                }
                else
                {
                    return;
                }
            }
            try
            {
                FileStream fs   = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
                XmlReader  xmlr = XmlReader.Create(fs);

                xmlr.ReadToFollowing("category");
                do
                {
                    int id = int.Parse(xmlr.GetAttribute("id"));
                    categoryIds.Add(id);
                    categories.Add(xmlr.ReadElementContentAsString());
                    spritesInCategory.Add(id, new List <int>());
                } while (xmlr.ReadToNextSibling("category"));

                while (xmlr.ReadToFollowing("sprite"))
                {
                    SpriteData d = readFromStream(xmlr);

                    //Check for user spritedata
                    FileStream fs_user   = new FileStream(Path.Combine(directory, "user_spritedata.xml"), FileMode.Open, FileAccess.Read, FileShare.Read);
                    XmlReader  xmlr_user = XmlReader.Create(fs_user);
                    while (xmlr_user.ReadToFollowing("sprite"))
                    {
                        if (int.Parse(xmlr_user.GetAttribute("id")) == d.spriteID)
                        {
                            d = readFromStream(xmlr_user);
                        }
                    }
                    xmlr_user.Close();
                    fs_user.Close();

                    spriteNames.Add(d.name);
                    spritesInCategory[d.categoryID].Add(d.spriteID);

                    if (d != null)
                    {
                        datas2.Add(d.spriteID, d);
                    }
                }

                for (int i = 0; i < datas2.Count; i++)
                {
                    int ActorID = ROM.GetClassIDFromTable(i);
                    datas.Add(i, datas2[ActorID]);
                }

                datas2.Clear();

                xmlr.Close();
                fs.Close();
            }
            catch (Exception e)
            {
                new ErrorMSGBox(LanguageManager.Get("SpriteData", "ErrorTitle"), LanguageManager.Get("SpriteData", "ErrorParse"), "", e.ToString()).ShowDialog();
                datas.Clear();
                datas2.Clear();
            }
        }