diff --git a/PKHeX.WinForms/Controls/PKM Editor/EditPK4.cs b/PKHeX.WinForms/Controls/PKM Editor/EditPK4.cs index 786ad8c22..727282e60 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/EditPK4.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/EditPK4.cs @@ -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; diff --git a/PKHeX.WinForms/Controls/PKM Editor/EditPK5.cs b/PKHeX.WinForms/Controls/PKM Editor/EditPK5.cs index 46d76c8b4..208a447b5 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/EditPK5.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/EditPK5.cs @@ -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) diff --git a/PKHeX.WinForms/Controls/PKM Editor/EditPK6.cs b/PKHeX.WinForms/Controls/PKM Editor/EditPK6.cs index c4146982a..5c0e7377c 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/EditPK6.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/EditPK6.cs @@ -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(); diff --git a/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs b/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs index c60a4da0b..2fe7b261f 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs @@ -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) { diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs index c9750d786..37b648203 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs @@ -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); }