mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-08-04 20:39:23 -05:00
speed up pkm loading slightly
PreparePKM had the opportunity to be recursive (preparation -> validating*N -> preparation*N), lock out preview sprite updating (which calls PreparePKM via Main.cs) while validating all controls remove uncallable paths (format is checked prior, and checksum check is never called as fieldsInitialized is forced false) move gui toggling to loading methods when appropriate
This commit is contained in:
parent
a6ef105544
commit
32abc6daf4
|
|
@ -16,6 +16,7 @@ private void PopulateFieldsPK4()
|
|||
LoadMisc4(pk4);
|
||||
|
||||
CB_EncounterType.SelectedValue = pk4.Gen4 ? pk4.EncounterType : 0;
|
||||
CB_EncounterType.Visible = Label_EncounterType.Visible = pkm.Gen4;
|
||||
|
||||
if (HaX)
|
||||
DEV_Ability.SelectedValue = pk4.Ability;
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ private void PopulateFieldsPK5()
|
|||
LoadMisc3(pk5);
|
||||
LoadMisc4(pk5);
|
||||
CB_EncounterType.SelectedValue = pk5.Gen4 ? pk5.EncounterType : 0;
|
||||
CB_EncounterType.Visible = Label_EncounterType.Visible = pkm.Gen4;
|
||||
CHK_NSparkle.Checked = pk5.NPokémon;
|
||||
|
||||
if (HaX)
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ private void PopulateFieldsPK6()
|
|||
LoadMisc6(pk6);
|
||||
|
||||
CB_EncounterType.SelectedValue = pk6.Gen4 ? pk6.EncounterType : 0;
|
||||
CB_EncounterType.Visible = Label_EncounterType.Visible = pkm.Gen4;
|
||||
|
||||
LoadPartyStats(pk6);
|
||||
UpdateStats();
|
||||
|
|
|
|||
|
|
@ -251,6 +251,9 @@ private void LoadMisc2(PKM pk)
|
|||
CB_HeldItem.SelectedValue = pk.HeldItem;
|
||||
CB_Form.SelectedIndex = CB_Form.Items.Count > pk.AltForm ? pk.AltForm : CB_Form.Items.Count - 1;
|
||||
TB_Friendship.Text = pk.CurrentFriendship.ToString();
|
||||
|
||||
Label_HatchCounter.Visible = CHK_IsEgg.Checked && pkm.Format > 1;
|
||||
Label_Friendship.Visible = !CHK_IsEgg.Checked && pkm.Format > 1;
|
||||
}
|
||||
private void SaveMisc2(PKM pk)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -62,10 +62,15 @@ public PKMEditor()
|
|||
public bool PKMIsUnsaved => fieldsInitialized && fieldsLoaded && LastData != null && LastData.Any(b => b != 0) && !LastData.SequenceEqual(PreparePKM().Data);
|
||||
public bool IsEmptyOrEgg => CHK_IsEgg.Checked || CB_Species.SelectedIndex == 0;
|
||||
|
||||
private bool forceValidation;
|
||||
public PKM PreparePKM(bool click = true)
|
||||
{
|
||||
if (click)
|
||||
{
|
||||
forceValidation = true;
|
||||
ValidateChildren();
|
||||
forceValidation = false;
|
||||
}
|
||||
PKM pk = GetPKMfromFields();
|
||||
return pk?.Clone();
|
||||
}
|
||||
|
|
@ -102,9 +107,6 @@ public void InitializeFields()
|
|||
{
|
||||
// Now that the ComboBoxes are ready, load the data.
|
||||
fieldsInitialized = true;
|
||||
pkm.RefreshChecksum();
|
||||
|
||||
// Load Data
|
||||
PopulateFields(pkm);
|
||||
}
|
||||
|
||||
|
|
@ -173,34 +175,17 @@ public void SetPKMFormatMode(int Format)
|
|||
public void PopulateFields(PKM pk, bool focus = true)
|
||||
{
|
||||
if (pk == null) { WinFormsUtil.Error("Attempted to load a null file."); return; }
|
||||
|
||||
if (!PKMConverter.IsConvertibleToFormat(pk, pkm.Format))
|
||||
{ WinFormsUtil.Alert($"Can't load Gen{pk.Format} to Gen{pkm.Format} games."); return; }
|
||||
|
||||
bool oldInit = fieldsInitialized;
|
||||
fieldsInitialized = fieldsLoaded = false;
|
||||
if (focus)
|
||||
Tab_Main.Focus();
|
||||
|
||||
if (fieldsInitialized & !pkm.ChecksumValid)
|
||||
WinFormsUtil.Alert("PKM File has an invalid checksum.");
|
||||
bool oldInit = fieldsInitialized;
|
||||
fieldsInitialized = fieldsLoaded = false;
|
||||
|
||||
if (pk.Format != pkm.Format) // past gen format
|
||||
{
|
||||
pkm = PKMConverter.ConvertToType(pk.Clone(), pkm.GetType(), out string _);
|
||||
if (pkm == null)
|
||||
pkm = pk.Clone();
|
||||
else if (pk.Format != pkm.Format && focus) // converted
|
||||
WinFormsUtil.Alert("Converted File.");
|
||||
}
|
||||
else
|
||||
pkm = pk.Clone();
|
||||
pkm = pk.Clone();
|
||||
|
||||
try { GetFieldsfromPKM(); }
|
||||
catch { fieldsInitialized = oldInit; throw; }
|
||||
finally { fieldsInitialized = oldInit; }
|
||||
|
||||
CB_EncounterType.Visible = Label_EncounterType.Visible = pkm.Gen4 && pkm.Format < 7;
|
||||
fieldsInitialized = oldInit;
|
||||
UpdateIVs(null, null);
|
||||
UpdatePKRSInfected(null, null);
|
||||
UpdatePKRSCured(null, null);
|
||||
|
|
@ -222,9 +207,6 @@ public void PopulateFields(PKM pk, bool focus = true)
|
|||
}
|
||||
fieldsLoaded = true;
|
||||
|
||||
Label_HatchCounter.Visible = CHK_IsEgg.Checked && pkm.Format > 1;
|
||||
Label_Friendship.Visible = !CHK_IsEgg.Checked && pkm.Format > 1;
|
||||
|
||||
SetMarkings();
|
||||
UpdateLegality();
|
||||
UpdateSprite();
|
||||
|
|
@ -293,7 +275,7 @@ public void UpdateUnicode(string[] symbols)
|
|||
}
|
||||
private void UpdateSprite()
|
||||
{
|
||||
if (fieldsLoaded && fieldsInitialized)
|
||||
if (fieldsLoaded && fieldsInitialized && !forceValidation)
|
||||
UpdatePreviewSprite?.Invoke(this, null);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user