From 4d6ce53bce691e65670f10e2ff60e8d631f3be31 Mon Sep 17 00:00:00 2001 From: Kurt Date: Wed, 15 May 2024 23:50:25 -0500 Subject: [PATCH] Don't bother cloning sav for Gen1-3 dex edits No need to clone the save file and allocate 2 bool arrays. Yay old code, why not do it better now? :) --- .../SAV_SimplePokedex.Designer.cs | 5 +- .../Save Editors/SAV_SimplePokedex.cs | 89 +++++++++---------- 2 files changed, 44 insertions(+), 50 deletions(-) diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_SimplePokedex.Designer.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_SimplePokedex.Designer.cs index 7646ae5c0..777808723 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/SAV_SimplePokedex.Designer.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_SimplePokedex.Designer.cs @@ -124,7 +124,6 @@ private void InitializeComponent() CLB_Caught.Name = "CLB_Caught"; CLB_Caught.Size = new System.Drawing.Size(139, 220); CLB_Caught.TabIndex = 12; - CLB_Caught.ItemCheck += CLB_Caught_ItemCheck; // // Label_Seen // @@ -144,7 +143,6 @@ private void InitializeComponent() CLB_Seen.Name = "CLB_Seen"; CLB_Seen.Size = new System.Drawing.Size(139, 220); CLB_Seen.TabIndex = 10; - CLB_Seen.ItemCheck += CLB_Seen_ItemCheck; // // SAV_SimplePokedex // @@ -160,9 +158,12 @@ private void InitializeComponent() Controls.Add(CLB_Caught); Controls.Add(Label_Seen); Controls.Add(CLB_Seen); + FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; Icon = Properties.Resources.Icon; Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + MaximizeBox = false; MaximumSize = new System.Drawing.Size(347, 427); + MinimizeBox = false; MinimumSize = new System.Drawing.Size(347, 427); Name = "SAV_SimplePokedex"; StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_SimplePokedex.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_SimplePokedex.cs index dc5090c04..f8c72c07a 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/SAV_SimplePokedex.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_SimplePokedex.cs @@ -6,87 +6,80 @@ namespace PKHeX.WinForms; public partial class SAV_SimplePokedex : Form { - private readonly SaveFile Origin; private readonly SaveFile SAV; + private readonly int MaxSpeciesID; public SAV_SimplePokedex(SaveFile sav) { InitializeComponent(); WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage); - SAV = (Origin = sav).Clone(); - seen = new bool[SAV.MaxSpeciesID]; - caught = new bool[SAV.MaxSpeciesID]; + SAV = sav; + var count = MaxSpeciesID = SAV.MaxSpeciesID; - var speciesNames = GameInfo.Strings.specieslist; - for (int i = 0; i < seen.Length; i++) - { - ushort species = (ushort)(i + 1); - seen[i] = SAV.GetSeen(species); - caught[i] = SAV.GetCaught(species); - CLB_Seen.Items.Add(speciesNames[species]); - CLB_Caught.Items.Add(speciesNames[species]); - CLB_Seen.SetItemChecked(i, seen[i]); - CLB_Caught.SetItemChecked(i, caught[i]); - } - initialized = true; + var speciesNames = GameInfo.Strings.specieslist.AsSpan(1, count); + AddAllSpecies(speciesNames); + LoadAllFlags(SAV, count); } - private readonly bool[] seen; - private readonly bool[] caught; - private readonly bool initialized; + private void AddAllSpecies(ReadOnlySpan speciesNames) + { + for (int i = 0; i < speciesNames.Length; i++) + { + CLB_Seen.Items.Add(speciesNames[i]); + CLB_Caught.Items.Add(speciesNames[i]); + } + } + + private void LoadAllFlags(SaveFile sav, int count) + { + for (int i = 0; i < count; i++) + { + ushort species = (ushort)(i + 1); + CLB_Seen.SetItemChecked(i, sav.GetSeen(species)); + CLB_Caught.SetItemChecked(i, sav.GetCaught(species)); + } + } + + private void SaveAllFlags(SaveFile sav, int count) + { + for (int i = 0; i < count; i++) + { + ushort species = (ushort)(i + 1); + sav.SetSeen(species, CLB_Seen.GetItemChecked(i)); + sav.SetCaught(species, CLB_Caught.GetItemChecked(i)); + } + } private void B_Save_Click(object sender, EventArgs e) { - for (int i = 0; i < seen.Length; i++) - { - ushort species = (ushort)(i + 1); - SAV.SetSeen(species, seen[i]); - SAV.SetCaught(species, caught[i]); - } - Origin.CopyChangesFrom(SAV); + SaveAllFlags(SAV, MaxSpeciesID); + SAV.State.Edited = true; Close(); } - private void B_Cancel_Click(object sender, EventArgs e) - { - Close(); - } + private void B_Cancel_Click(object sender, EventArgs e) => Close(); private void B_SeenAll_Click(object sender, EventArgs e) { - for (int i = 0; i < SAV.MaxSpeciesID; i++) + for (int i = 0; i < MaxSpeciesID; i++) CLB_Seen.SetItemChecked(i, true); } private void B_SeenNone_Click(object sender, EventArgs e) { - for (int i = 0; i < SAV.MaxSpeciesID; i++) + for (int i = 0; i < MaxSpeciesID; i++) CLB_Seen.SetItemChecked(i, false); } private void B_CaughtAll_Click(object sender, EventArgs e) { - for (int i = 0; i < SAV.MaxSpeciesID; i++) + for (int i = 0; i < MaxSpeciesID; i++) CLB_Caught.SetItemChecked(i, true); } private void B_CaughtNone_Click(object sender, EventArgs e) { - for (int i = 0; i < SAV.MaxSpeciesID; i++) + for (int i = 0; i < MaxSpeciesID; i++) CLB_Caught.SetItemChecked(i, false); } - - private void CLB_Seen_ItemCheck(object sender, ItemCheckEventArgs e) - { - if (!initialized) - return; - seen[e.Index] = e.NewValue == CheckState.Checked; - } - - private void CLB_Caught_ItemCheck(object sender, ItemCheckEventArgs e) - { - if (!initialized) - return; - caught[e.Index] = e.NewValue == CheckState.Checked; - } }