From 46f50a3a5604d3f5e8e0c008657dc3fe4f05779f Mon Sep 17 00:00:00 2001 From: Kurt Date: Tue, 13 Jul 2021 00:25:51 -0700 Subject: [PATCH] Use named consts for magic gender values More personal magic value comparisons --- .../Editing/Applicators/GenderApplicator.cs | 6 ++--- .../Legality/RNG/Frame/FrameGenerator.cs | 4 +++- PKHeX.Core/Legality/RNG/MethodFinder.cs | 4 ++-- PKHeX.Core/Legality/RNG/RaidRNG.cs | 12 +++++----- PKHeX.Core/PKM/PKM.cs | 6 ++--- PKHeX.Core/PKM/Shared/GBPKM.cs | 6 ++--- PKHeX.Core/PKM/Util/PKX.cs | 8 +++---- PKHeX.Core/PersonalInfo/PersonalInfo.cs | 12 +++++++--- .../Saves/Substructures/PokeDex/Zukan7.cs | 2 +- .../Save Editors/Gen4/SAV_Pokedex4.cs | 6 ++--- .../Save Editors/Gen5/SAV_Pokedex5.cs | 22 ++++++++++------- .../Save Editors/Gen6/SAV_PokedexORAS.cs | 24 +++++++++++-------- .../Save Editors/Gen6/SAV_PokedexXY.cs | 22 ++++++++++------- .../Save Editors/Gen7/SAV_PokedexGG.cs | 22 ++++++++++------- .../Save Editors/Gen7/SAV_PokedexSM.cs | 22 ++++++++++------- 15 files changed, 103 insertions(+), 75 deletions(-) diff --git a/PKHeX.Core/Editing/Applicators/GenderApplicator.cs b/PKHeX.Core/Editing/Applicators/GenderApplicator.cs index 59fa5e13d..143e10178 100644 --- a/PKHeX.Core/Editing/Applicators/GenderApplicator.cs +++ b/PKHeX.Core/Editing/Applicators/GenderApplicator.cs @@ -49,9 +49,9 @@ public static int GetSaneGender(this PKM pk) int gt = pk.PersonalInfo.Gender; switch (gt) { - case 255: return 2; // Genderless - case 254: return 1; // Female-Only - case 0: return 0; // Male-Only + case PersonalInfo.RatioMagicGenderless: return 2; + case PersonalInfo.RatioMagicFemale: return 1; + case PersonalInfo.RatioMagicMale: return 0; } if (!pk.IsGenderValid()) return PKX.GetGenderFromPIDAndRatio(pk.PID, gt); diff --git a/PKHeX.Core/Legality/RNG/Frame/FrameGenerator.cs b/PKHeX.Core/Legality/RNG/Frame/FrameGenerator.cs index 57e1d9f6e..3bdc04746 100644 --- a/PKHeX.Core/Legality/RNG/Frame/FrameGenerator.cs +++ b/PKHeX.Core/Legality/RNG/Frame/FrameGenerator.cs @@ -88,7 +88,9 @@ public FrameGenerator(PKM pk) /// Returns the maximum or minimum gender value that corresponds to the input gender ratio. private static int GetGenderMinMax(int gender, int ratio, bool max) => ratio switch { - 0 or >254 => max ? 255 : 0, + PersonalInfo.RatioMagicMale => max ? 255 : 0, + PersonalInfo.RatioMagicFemale => max ? 255 : 0, + PersonalInfo.RatioMagicGenderless => max ? 255 : 0, _ => gender switch { 0 => max ? 255 : ratio, // male diff --git a/PKHeX.Core/Legality/RNG/MethodFinder.cs b/PKHeX.Core/Legality/RNG/MethodFinder.cs index 70359dffe..f0caeaf67 100644 --- a/PKHeX.Core/Legality/RNG/MethodFinder.cs +++ b/PKHeX.Core/Legality/RNG/MethodFinder.cs @@ -366,7 +366,7 @@ private static bool GetCuteCharmMatch(PKM pk, uint pid, out PIDIV pidiv) case 2: break; // can't cute charm a genderless pkm case 0: // male var gr = getRatio(); - if (254 <= gr) // no modification for PID + if (gr >= PersonalInfo.RatioMagicFemale) // no modification for PID break; var rate = 25*((gr / 25) + 1); // buffered var nature = pid % 25; @@ -378,7 +378,7 @@ private static bool GetCuteCharmMatch(PKM pk, uint pid, out PIDIV pidiv) case 1: // female if (pid >= 25) break; // nope, this isn't a valid nature - if (254 <= getRatio()) // no modification for PID + if (getRatio() >= PersonalInfo.RatioMagicFemale) // no modification for PID break; pidiv = PIDIV.CuteCharm; diff --git a/PKHeX.Core/Legality/RNG/RaidRNG.cs b/PKHeX.Core/Legality/RNG/RaidRNG.cs index 2fc89aef4..430f19da7 100644 --- a/PKHeX.Core/Legality/RNG/RaidRNG.cs +++ b/PKHeX.Core/Legality/RNG/RaidRNG.cs @@ -112,15 +112,15 @@ private static bool Verify(PKM pk, ulong seed, int[] ivs, int iv_count, int abil switch (gender_ratio) { - case 255 when pk.Gender != 2: + case PersonalInfo.RatioMagicGenderless when pk.Gender != 2: if (pk.Gender != 2) return false; break; - case 254 when pk.Gender != 1: + case PersonalInfo.RatioMagicFemale when pk.Gender != 1: if (pk.Gender != 1) return false; break; - case 000: + case PersonalInfo.RatioMagicMale: if (pk.Gender != 0) return false; break; @@ -254,9 +254,9 @@ private static bool ApplyDetailsTo(PKM pk, ulong seed, int[] ivs, int iv_count, pk.Gender = gender_ratio switch { - 255 => 2, - 254 => 1, - 000 => 0, + PersonalInfo.RatioMagicGenderless => 2, + PersonalInfo.RatioMagicFemale => 1, + PersonalInfo.RatioMagicMale => 0, _ => (int) rng.NextInt(252) + 1 < gender_ratio ? 1 : 0 }; diff --git a/PKHeX.Core/PKM/PKM.cs b/PKHeX.Core/PKM/PKM.cs index a69a4be4b..24134c2ec 100644 --- a/PKHeX.Core/PKM/PKM.cs +++ b/PKHeX.Core/PKM/PKM.cs @@ -570,11 +570,11 @@ public virtual bool IsGenderValid() { int gender = Gender; int gv = PersonalInfo.Gender; - if (gv == 255) + if (gv == PersonalInfo.RatioMagicGenderless) return gender == 2; - if (gv == 254) + if (gv == PersonalInfo.RatioMagicFemale) return gender == 1; - if (gv == 0) + if (gv == PersonalInfo.RatioMagicMale) return gender == 0; int gen = Generation; diff --git a/PKHeX.Core/PKM/Shared/GBPKM.cs b/PKHeX.Core/PKM/Shared/GBPKM.cs index 1134679fd..e847ee88c 100644 --- a/PKHeX.Core/PKM/Shared/GBPKM.cs +++ b/PKHeX.Core/PKM/Shared/GBPKM.cs @@ -97,9 +97,9 @@ public sealed override int Gender int gv = PersonalInfo.Gender; return gv switch { - 255 => 2, - 254 => 1, - 0 => 0, + PersonalInfo.RatioMagicGenderless => 2, + PersonalInfo.RatioMagicFemale => 1, + PersonalInfo.RatioMagicMale => 0, _ => IV_ATK > gv >> 4 ? 0 : 1 }; } diff --git a/PKHeX.Core/PKM/Util/PKX.cs b/PKHeX.Core/PKM/Util/PKX.cs index 597ed718d..7734edf82 100644 --- a/PKHeX.Core/PKM/Util/PKX.cs +++ b/PKHeX.Core/PKM/Util/PKX.cs @@ -129,7 +129,7 @@ public static uint GetRandomPID(Random rnd, int species, int gender, int origin, uint abilBitVal = g34 ? oldPID & 0x0000_0001 : oldPID & 0x0001_0000; bool g3unown = origin <= 5 && species == (int)Species.Unown; - bool singleGender = gt is 0 or 254 or 255; // single gender, skip gender check + bool singleGender = PersonalInfo.IsSingleGender(gt); // single gender, skip gender check while (true) // Loop until we find a suitable PID { uint pid = Util.Rand32(rnd); @@ -192,9 +192,9 @@ public static int GetGenderFromPID(int species, uint pid) public static int GetGenderFromPIDAndRatio(uint pid, int gr) => gr switch { - 255 => 2, - 254 => 1, - 0 => 0, + PersonalInfo.RatioMagicGenderless => 2, + PersonalInfo.RatioMagicFemale => 1, + PersonalInfo.RatioMagicMale => 0, _ => (pid & 0xFF) < gr ? 1 : 0 }; diff --git a/PKHeX.Core/PersonalInfo/PersonalInfo.cs b/PKHeX.Core/PersonalInfo/PersonalInfo.cs index ba0ca20ab..02190dcd9 100644 --- a/PKHeX.Core/PersonalInfo/PersonalInfo.cs +++ b/PKHeX.Core/PersonalInfo/PersonalInfo.cs @@ -296,6 +296,12 @@ public int FixedGender } } + public const int RatioMagicGenderless = 255; + public const int RatioMagicFemale = 254; + public const int RatioMagicMale = 0; + + public static bool IsSingleGender(int gt) => (uint)(gt - 1) >= 253; + /// /// Indicates that the entry has two genders. /// @@ -304,17 +310,17 @@ public int FixedGender /// /// Indicates that the entry is exclusively Genderless. /// - public bool Genderless => Gender == 255; + public bool Genderless => Gender == RatioMagicGenderless; /// /// Indicates that the entry is exclusively Female gendered. /// - public bool OnlyFemale => Gender == 254; + public bool OnlyFemale => Gender == RatioMagicFemale; /// /// Indicates that the entry is exclusively Male gendered. /// - public bool OnlyMale => Gender == 0; + public bool OnlyMale => Gender == RatioMagicMale; /// /// Indicates if the entry has Formes or not. diff --git a/PKHeX.Core/Saves/Substructures/PokeDex/Zukan7.cs b/PKHeX.Core/Saves/Substructures/PokeDex/Zukan7.cs index 45ef0d707..d3623c650 100644 --- a/PKHeX.Core/Saves/Substructures/PokeDex/Zukan7.cs +++ b/PKHeX.Core/Saves/Substructures/PokeDex/Zukan7.cs @@ -242,7 +242,7 @@ public int GetBaseSpeciesGenderValue(int index) // meowstic special handling const int meow = 678; if (index == meow - 1 || (index >= SAV.MaxSpeciesID && FormBaseSpecies[index - SAV.MaxSpeciesID] == meow)) - return index < SAV.MaxSpeciesID ? 0 : 254; // M : F + return index < SAV.MaxSpeciesID ? PersonalInfo.RatioMagicMale : PersonalInfo.RatioMagicFemale; // M : F if (index < SAV.MaxSpeciesID) return SAV.Personal[index + 1].Gender; diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.cs index 09306d691..693124a19 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.cs @@ -139,13 +139,13 @@ private void LoadGenders(bool seen) var gr = pi.Gender; switch (gr) { - case 255: // Genderless + case PersonalInfo.RatioMagicGenderless: first.Items.Add(GENDERLESS); break; - case 0: + case PersonalInfo.RatioMagicMale: first.Items.Add(MALE); break; - case 254: + case PersonalInfo.RatioMagicFemale: first.Items.Add(FEMALE); break; default: diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Pokedex5.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Pokedex5.cs index b0ae481e8..34c92ecd7 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Pokedex5.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Pokedex5.cs @@ -223,8 +223,10 @@ private void B_GiveAll_Click(object sender, EventArgs e) int index = LB_Species.SelectedIndex+1; int gt = SAV.Personal[index].Gender; - CHK_P2.Checked = CHK_P4.Checked = gt != 254 && ModifierKeys != Keys.Control; - CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255) && ModifierKeys != Keys.Control; + bool canBeMale = gt != PersonalInfo.RatioMagicFemale; + bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless); + CHK_P2.Checked = CHK_P4.Checked = canBeMale && ModifierKeys != Keys.Control; + CHK_P3.Checked = CHK_P5.Checked = canBeFemale && ModifierKeys != Keys.Control; if (ModifierKeys == Keys.Control) { @@ -233,7 +235,7 @@ private void B_GiveAll_Click(object sender, EventArgs e) } else if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) { - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; } } @@ -262,7 +264,7 @@ private void ModifyAll(object sender, EventArgs e) { // if seen ensure at least one Displayed if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; } else { @@ -297,26 +299,28 @@ private void ModifyAll(object sender, EventArgs e) if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) // if seen { if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) // not displayed - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; // check one + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; // check one } } if (mnuCaughtNone != sender) { if (mnuComplete == sender) { - CHK_P2.Checked = CHK_P4.Checked = gt != 254; // not female only - CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255); // not male only or genderless + bool canBeMale = gt != PersonalInfo.RatioMagicFemale; + bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless); + CHK_P2.Checked = CHK_P4.Checked = canBeMale; + CHK_P3.Checked = CHK_P5.Checked = canBeFemale; } else { // ensure at least one SEEN if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) - (gt != 254 ? CHK_P2 : CHK_P3).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P2 : CHK_P3).Checked = true; } // ensure at least one Displayed if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; } } } diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs index c6b9f8043..51a89ee8b 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs @@ -218,8 +218,10 @@ private void B_GiveAll_Click(object sender, EventArgs e) int index = LB_Species.SelectedIndex+1; int gt = SAV.Personal[index].Gender; - CHK_P2.Checked = CHK_P4.Checked = gt != 254 && ModifierKeys != Keys.Control; - CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255) && ModifierKeys != Keys.Control; + bool canBeMale = gt != PersonalInfo.RatioMagicFemale; + bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless); + CHK_P2.Checked = CHK_P4.Checked = canBeMale && ModifierKeys != Keys.Control; + CHK_P3.Checked = CHK_P5.Checked = canBeFemale && ModifierKeys != Keys.Control; if (ModifierKeys == Keys.Control) { @@ -228,7 +230,7 @@ private void B_GiveAll_Click(object sender, EventArgs e) } else if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) { - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; } for (int i = 0; i < CLB_FormsSeen.Items.Count; i++) @@ -269,7 +271,6 @@ private void ModifyAll(object sender, EventArgs e) { for (int i = 0; i < CB_Species.Items.Count; i++) { - int gt = SAV.Personal[i + 1].Gender; LB_Species.SelectedIndex = i; foreach (CheckBox t in new[] { CHK_P2, CHK_P3, CHK_P4, CHK_P5 }) t.Checked = mnuSeenNone != sender && t.Enabled; @@ -277,8 +278,9 @@ private void ModifyAll(object sender, EventArgs e) if (mnuSeenNone != sender) { // if seen ensure at least one Displayed + int gt = SAV.Personal[i + 1].Gender; if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; } else { @@ -310,26 +312,28 @@ private void ModifyAll(object sender, EventArgs e) if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) // if seen { if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) // not displayed - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; // check one + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; // check one } } if (mnuCaughtNone != sender) { if (mnuComplete == sender) { - CHK_P2.Checked = CHK_P4.Checked = gt != 254; // not female only - CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255); // not male only or genderless + bool canBeMale = gt != PersonalInfo.RatioMagicFemale; + bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless); + CHK_P2.Checked = CHK_P4.Checked = canBeMale; + CHK_P3.Checked = CHK_P5.Checked = canBeFemale; } else { // ensure at least one SEEN if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) - (gt != 254 ? CHK_P2 : CHK_P3).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P2 : CHK_P3).Checked = true; } // ensure at least one Displayed if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; } } } diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs index 792ed18e3..5ec8e4092 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs @@ -231,8 +231,10 @@ private void B_GiveAll_Click(object sender, EventArgs e) int index = LB_Species.SelectedIndex+1; int gt = SAV.Personal[index].Gender; - CHK_P2.Checked = CHK_P4.Checked = gt != 254 && ModifierKeys != Keys.Control; - CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255) && ModifierKeys != Keys.Control; + bool canBeMale = gt != PersonalInfo.RatioMagicFemale; + bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless); + CHK_P2.Checked = CHK_P4.Checked = canBeMale && ModifierKeys != Keys.Control; + CHK_P3.Checked = CHK_P5.Checked = canBeFemale && ModifierKeys != Keys.Control; if (ModifierKeys == Keys.Control) { @@ -241,7 +243,7 @@ private void B_GiveAll_Click(object sender, EventArgs e) } else if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) { - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; } } @@ -270,7 +272,7 @@ private void ModifyAll(object sender, EventArgs e) { // if seen ensure at least one Displayed if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; } else { @@ -302,26 +304,28 @@ private void ModifyAll(object sender, EventArgs e) if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) // if seen { if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) // not displayed - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; // check one + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; // check one } } if (mnuCaughtNone != sender) { if (mnuComplete == sender) { - CHK_P2.Checked = CHK_P4.Checked = gt != 254; // not female only - CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255); // not male only or genderless + bool canBeMale = gt != PersonalInfo.RatioMagicFemale; + bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless); + CHK_P2.Checked = CHK_P4.Checked = canBeMale; + CHK_P3.Checked = CHK_P5.Checked = canBeFemale; } else { // ensure at least one SEEN if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) - (gt != 254 ? CHK_P2 : CHK_P3).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P2 : CHK_P3).Checked = true; } // ensure at least one Displayed if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; } } } diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexGG.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexGG.cs index 178098a9c..db44f06d5 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexGG.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexGG.cs @@ -216,8 +216,10 @@ private void GetEntry() int gt = Dex.GetBaseSpeciesGenderValue(LB_Species.SelectedIndex); - CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = gt != 254; // Not Female-Only - CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = gt is not (0 or 255); // Not Male-Only and Not Genderless + bool canBeMale = gt != PersonalInfo.RatioMagicFemale; + bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless); + CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = canBeMale; // Not Female-Only + CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = canBeFemale; // Not Male-Only and Not Genderless for (int i = 0; i < 4; i++) CP[i + 1].Checked = Dex.GetSeen(currentSpecies, i); @@ -340,8 +342,10 @@ private void B_GiveAll_Click(object sender, EventArgs e) } int gt = Dex.GetBaseSpeciesGenderValue(LB_Species.SelectedIndex); - CHK_P2.Checked = CHK_P4.Checked = gt != 254 && ModifierKeys != Keys.Control; - CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255) && ModifierKeys != Keys.Control; + bool canBeMale = gt != PersonalInfo.RatioMagicFemale; + bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless); + CHK_P2.Checked = CHK_P4.Checked = canBeMale && ModifierKeys != Keys.Control; + CHK_P3.Checked = CHK_P5.Checked = canBeFemale && ModifierKeys != Keys.Control; if (ModifierKeys == Keys.Control) { @@ -350,7 +354,7 @@ private void B_GiveAll_Click(object sender, EventArgs e) } else if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) { - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; } } @@ -465,7 +469,7 @@ private void SetCaught(object sender, int gt, int lang, bool isForm) if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) // if seen { if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) // not displayed - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; // check one + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; // check one } return; @@ -481,14 +485,14 @@ private void SetCaught(object sender, int gt, int lang, bool isForm) { // ensure at least one SEEN if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) - (gt != 254 ? CHK_P2 : CHK_P3).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P2 : CHK_P3).Checked = true; } // ensure at least one Displayed except for formes if (isForm) return; if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) - (gt != 254 ? CHK_P6 : CHK_P7).Checked = CHK_P1.Enabled; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = CHK_P1.Enabled; } private void SetSeen(object sender, int gt, bool isForm) @@ -502,7 +506,7 @@ private void SetSeen(object sender, int gt, bool isForm) if (isForm) return; if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; } else { diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexSM.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexSM.cs index bd66094f4..74d133520 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexSM.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexSM.cs @@ -205,8 +205,10 @@ private void GetEntry() int gt = Dex.GetBaseSpeciesGenderValue(LB_Species.SelectedIndex); - CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = gt != 254; // Not Female-Only - CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = gt is not (0 or 255); // Not Male-Only and Not Genderless + bool canBeMale = gt != PersonalInfo.RatioMagicFemale; + bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless); + CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = canBeMale; // Not Female-Only + CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = canBeFemale; // Not Male-Only and Not Genderless for (int i = 0; i < 4; i++) CP[i + 1].Checked = Dex.GetSeen(currentSpecies, i); @@ -276,8 +278,10 @@ private void B_GiveAll_Click(object sender, EventArgs e) } int gt = Dex.GetBaseSpeciesGenderValue(LB_Species.SelectedIndex); - CHK_P2.Checked = CHK_P4.Checked = gt != 254 && ModifierKeys != Keys.Control; - CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255) && ModifierKeys != Keys.Control; + bool canBeMale = gt != PersonalInfo.RatioMagicFemale; + bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless); + CHK_P2.Checked = CHK_P4.Checked = canBeMale && ModifierKeys != Keys.Control; + CHK_P3.Checked = CHK_P5.Checked = canBeFemale && ModifierKeys != Keys.Control; if (ModifierKeys == Keys.Control) { @@ -286,7 +290,7 @@ private void B_GiveAll_Click(object sender, EventArgs e) } else if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) { - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; } } @@ -373,7 +377,7 @@ private void SetCaught(object sender, int gt, int lang, bool isForm) if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) // if seen { if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) // not displayed - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; // check one + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; // check one } return; @@ -389,14 +393,14 @@ private void SetCaught(object sender, int gt, int lang, bool isForm) { // ensure at least one SEEN if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) - (gt != 254 ? CHK_P2 : CHK_P3).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P2 : CHK_P3).Checked = true; } // ensure at least one Displayed except for formes if (isForm) return; if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) - (gt != 254 ? CHK_P6 : CHK_P7).Checked = CHK_P1.Enabled; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = CHK_P1.Enabled; } private void SetSeen(object sender, int gt, bool isForm) @@ -410,7 +414,7 @@ private void SetSeen(object sender, int gt, bool isForm) if (isForm) return; if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) - (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; + (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; } else {