mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-09-07 23:08:47 -05:00
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? :)
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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<string> 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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user