private void updateSpriteDataButton_Click(object sender, EventArgs e) { SpriteData.Update(); }
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; }
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); }
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(); } }
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())); * }*/ }
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(); } }