From 5ff4d8d2cacab5d877eed1ca7549a67ac943eb39 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 19 Feb 2022 15:09:55 -0800 Subject: [PATCH] Handle resident gfpak as gfpak --- pkNX.Game/File/GameFileMapping.cs | 2 +- pkNX.WinForms/Dumping/GameDumperPLA.cs | 9 +++------ pkNX.WinForms/MainEditor/EditorPLA.cs | 7 ++----- .../Subforms/AreaEditor8a.Designer.cs | 19 ++++++++++--------- pkNX.WinForms/Subforms/AreaEditor8a.cs | 16 ++++++++++++---- 5 files changed, 28 insertions(+), 25 deletions(-) diff --git a/pkNX.Game/File/GameFileMapping.cs b/pkNX.Game/File/GameFileMapping.cs index 670a3b51..ebab5bda 100644 --- a/pkNX.Game/File/GameFileMapping.cs +++ b/pkNX.Game/File/GameFileMapping.cs @@ -221,7 +221,7 @@ internal void SaveAll() new(GameFile.EncounterGift, ContainerType.SingleFile, "bin", "pokemon", "data", "poke_add.bin"), new(GameFile.Learnsets, ContainerType.SingleFile, "bin", "pml", "waza_oboe", "waza_oboe_total.wazaoboe"), - new(GameFile.Resident, ContainerType.SingleFile, "bin", "archive", "field", "resident_release.gfpak"), + new(GameFile.Resident, ContainerType.GFPack, "bin", "archive", "field", "resident_release.gfpak"), new(GameFile.EncounterRateTable, ContainerType.SingleFile, "bin", "pokemon", "data", "poke_encount.bin"), new(GameFile.PokeMisc, ContainerType.SingleFile, "bin", "pokemon", "data", "poke_misc.bin"), diff --git a/pkNX.WinForms/Dumping/GameDumperPLA.cs b/pkNX.WinForms/Dumping/GameDumperPLA.cs index 7f62019c..8a2eff95 100644 --- a/pkNX.WinForms/Dumping/GameDumperPLA.cs +++ b/pkNX.WinForms/Dumping/GameDumperPLA.cs @@ -373,8 +373,7 @@ public void DumpWilds() var miscdata = ROM.GetFile(GameFile.PokeMisc)[0]; var misc = FlatBufferConverter.DeserializeFrom(miscdata); - var residentpak = ROM.GetFile(GameFile.Resident)[0]; - var resident = new GFPack(residentpak); + var resident = (GFPack)ROM.GetFile(GameFile.Resident); var bin_settings = resident.GetDataFullPath("bin/field/resident/AreaSettings.bin"); var settings = FlatBufferConverter.DeserializeFrom(bin_settings); @@ -465,8 +464,7 @@ public void DumpWilds() public void DumpResident() { - var residentpak = ROM.GetFile(GameFile.Resident)[0]; - var resident = new GFPack(residentpak); + var resident = (GFPack)ROM.GetFile(GameFile.Resident); var bin_settings = resident.GetDataFullPath("bin/field/resident/AreaSettings.bin"); var settings = FlatBufferConverter.DeserializeFrom(bin_settings); var dir = GetPath("Resident"); @@ -504,8 +502,7 @@ public void DumpResident() public void DumpPlacement() { - var residentpak = ROM.GetFile(GameFile.Resident)[0]; - var resident = new GFPack(residentpak); + var resident = (GFPack)ROM.GetFile(GameFile.Resident); var bin_settings = resident.GetDataFullPath("bin/field/resident/AreaSettings.bin"); var settings = FlatBufferConverter.DeserializeFrom(bin_settings); diff --git a/pkNX.WinForms/MainEditor/EditorPLA.cs b/pkNX.WinForms/MainEditor/EditorPLA.cs index 135e812a..c5b90de9 100644 --- a/pkNX.WinForms/MainEditor/EditorPLA.cs +++ b/pkNX.WinForms/MainEditor/EditorPLA.cs @@ -123,15 +123,13 @@ public void EditApp_Config_List() public void EditArea_Weather() { - var res = ROM.GetFile(GameFile.Resident); - var gfp = new GFPack(res[0]); + var gfp = (GFPack)ROM.GetFile(GameFile.Resident); var data = gfp[2065]; var obj = FlatBufferConverter.DeserializeFrom(data); var result = PopFlat(obj.Table, "Area Weather Editor", z => z.Hash.ToString("X16")); if (!result) return; gfp[2065] = FlatBufferConverter.SerializeFrom(obj); - res[0] = gfp.Write(); } public void EditStatic() @@ -240,8 +238,7 @@ public void EditMiscSpeciesInfo() public void EditSpawns() { - var residentpak = ROM.GetFile(GameFile.Resident)[0]; - var resident = new GFPack(residentpak); + var resident = (GFPack)ROM.GetFile(GameFile.Resident); using var form = new MapViewer8a((GameManagerPLA)ROM, resident); form.ShowDialog(); } diff --git a/pkNX.WinForms/Subforms/AreaEditor8a.Designer.cs b/pkNX.WinForms/Subforms/AreaEditor8a.Designer.cs index 749e14e7..c84192f3 100644 --- a/pkNX.WinForms/Subforms/AreaEditor8a.Designer.cs +++ b/pkNX.WinForms/Subforms/AreaEditor8a.Designer.cs @@ -31,10 +31,10 @@ private void InitializeComponent() this.CB_Area = new System.Windows.Forms.ComboBox(); this.TC_Editor = new System.Windows.Forms.TabControl(); this.Tab_Encounters = new System.Windows.Forms.TabPage(); + this.Edit_Encounters = new pkNX.WinForms.Controls.EncounterTableEditor8a(); this.Tab_Regular = new System.Windows.Forms.TabPage(); this.Tab_Wormhole = new System.Windows.Forms.TabPage(); this.Tab_Landmarks = new System.Windows.Forms.TabPage(); - this.Edit_Encounters = new pkNX.WinForms.Controls.EncounterTableEditor8a(); this.Tab_Randomize = new System.Windows.Forms.TabPage(); this.B_Save = new System.Windows.Forms.Button(); this.TC_Editor.SuspendLayout(); @@ -76,6 +76,14 @@ private void InitializeComponent() this.Tab_Encounters.Text = "Encounters"; this.Tab_Encounters.UseVisualStyleBackColor = true; // + // Edit_Encounters + // + this.Edit_Encounters.Dock = System.Windows.Forms.DockStyle.Fill; + this.Edit_Encounters.Location = new System.Drawing.Point(3, 3); + this.Edit_Encounters.Name = "Edit_Encounters"; + this.Edit_Encounters.Size = new System.Drawing.Size(671, 449); + this.Edit_Encounters.TabIndex = 0; + // // Tab_Regular // this.Tab_Regular.Location = new System.Drawing.Point(4, 22); @@ -104,14 +112,6 @@ private void InitializeComponent() this.Tab_Landmarks.Text = "*Landmarks"; this.Tab_Landmarks.UseVisualStyleBackColor = true; // - // Edit_Encounters - // - this.Edit_Encounters.Dock = System.Windows.Forms.DockStyle.Fill; - this.Edit_Encounters.Location = new System.Drawing.Point(3, 3); - this.Edit_Encounters.Name = "Edit_Encounters"; - this.Edit_Encounters.Size = new System.Drawing.Size(671, 449); - this.Edit_Encounters.TabIndex = 0; - // // Tab_Randomize // this.Tab_Randomize.Location = new System.Drawing.Point(4, 22); @@ -142,6 +142,7 @@ private void InitializeComponent() this.Controls.Add(this.CB_Area); this.Name = "AreaEditor8a"; this.Text = "Area Editor"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.AreaEditor8a_FormClosing); this.TC_Editor.ResumeLayout(false); this.Tab_Encounters.ResumeLayout(false); this.ResumeLayout(false); diff --git a/pkNX.WinForms/Subforms/AreaEditor8a.cs b/pkNX.WinForms/Subforms/AreaEditor8a.cs index 7203e6d3..324352af 100644 --- a/pkNX.WinForms/Subforms/AreaEditor8a.cs +++ b/pkNX.WinForms/Subforms/AreaEditor8a.cs @@ -24,8 +24,7 @@ public AreaEditor8a(GameManagerPLA rom) { ROM = rom; - var residentpak = ROM.GetFile(GameFile.Resident)[0]; - Resident = new GFPack(residentpak); + Resident = (GFPack)ROM.GetFile(GameFile.Resident); var bin_settings = Resident.GetDataFullPath("bin/field/resident/AreaSettings.bin"); Settings = FlatBufferConverter.DeserializeFrom(bin_settings); @@ -74,8 +73,17 @@ private void SaveArea() private void B_Save_Click(object sender, EventArgs e) { - SaveArea(); - ROM.GetFile(GameFile.Resident)[0] = Resident.Write(); + Save = true; Close(); } + + private bool Save; + + private void AreaEditor8a_FormClosing(object sender, FormClosingEventArgs e) + { + if (Save) + SaveArea(); + else + Resident.CancelEdits(); + } }