mirror of
https://github.com/kwsch/PKHeX
synced 2025-02-17 05:48:44 +00:00
Rewrite some magic gender value logic
it's always been a byte for ratios, but we never know; plus, it's a little more self documenting
This commit is contained in:
parent
294d861f86
commit
0836d3191d
7 changed files with 39 additions and 40 deletions
|
@ -9,7 +9,7 @@ namespace PKHeX.Core
|
|||
internal static int[] GetEggMoves(PKM pkm, int species, int formnum, GameVersion version)
|
||||
{
|
||||
int gen = pkm.Format <= 2 || pkm.VC ? 2 : pkm.GenNumber;
|
||||
if (!pkm.InhabitedGeneration(gen, species) || (pkm.PersonalInfo.Gender == 255 && !FixedGenderFromBiGender.Contains(species)))
|
||||
if (!pkm.InhabitedGeneration(gen, species) || (pkm.PersonalInfo.Genderless && !FixedGenderFromBiGender.Contains(species)))
|
||||
return Array.Empty<int>();
|
||||
|
||||
if (pkm.Version == 15 || pkm.GG)
|
||||
|
|
|
@ -273,7 +273,7 @@ namespace PKHeX.Core
|
|||
{
|
||||
var pi = PersonalTable.B2W2.GetFormeEntry(Species, Form);
|
||||
pk.Nature = (int)criteria.GetNature((Nature)Nature);
|
||||
pk.Gender = pi.Gender == 255 ? 2 : Gender != 2 ? Gender : criteria.GetGender(-1, pi);
|
||||
pk.Gender = pi.Genderless ? 2 : Gender != 2 ? Gender : criteria.GetGender(-1, pi);
|
||||
var av = GetAbilityIndex(criteria, pi);
|
||||
SetPID(pk, av);
|
||||
pk.RefreshAbility(av);
|
||||
|
|
|
@ -128,15 +128,15 @@ namespace PKHeX.WinForms
|
|||
GB_Language.Enabled = true;
|
||||
}
|
||||
|
||||
int gt = SAV.Personal[pk].Gender;
|
||||
var pi = SAV.Personal[pk];
|
||||
|
||||
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 == 0 || (gt == 255)); // Not Male-Only and Not Genderless
|
||||
CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = !pi.OnlyFemale;
|
||||
CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = !(pi.OnlyMale || pi.Genderless);
|
||||
|
||||
CLB_FormsSeen.Items.Clear();
|
||||
CLB_FormDisplayed.Items.Clear();
|
||||
|
||||
int fc = SAV.Personal[species].FormeCount;
|
||||
int fc = pi.FormeCount;
|
||||
int f = SAV is SAV5B2W2 ? DexFormUtil.GetDexFormIndexB2W2(species, fc) : DexFormUtil.GetDexFormIndexBW(species, fc);
|
||||
if (f < 0)
|
||||
return;
|
||||
|
|
|
@ -356,27 +356,25 @@ namespace PKHeX.WinForms
|
|||
{
|
||||
// Get Gender Threshold
|
||||
int species = WinFormsUtil.GetIndex(CB_Species);
|
||||
int gt = SAV.Personal[species].Gender;
|
||||
var pi = SAV.Personal[species];
|
||||
|
||||
if (gt == 255)
|
||||
Label_Gender.Text = gendersymbols[2];
|
||||
else if (gt == 254)
|
||||
Label_Gender.Text = gendersymbols[1];
|
||||
else if (gt == 0)
|
||||
Label_Gender.Text = gendersymbols[0];
|
||||
|
||||
if (gt == 255 || gt == 0 || gt == 254) // Single gender/genderless abort
|
||||
return;
|
||||
|
||||
if (gt < 256) // If not a single gender(less) species:
|
||||
var fg = pi.FixedGender;
|
||||
if (fg == -1) // dual gender
|
||||
{
|
||||
Label_Gender.Text = PKX.GetGenderFromString(Label_Gender.Text) == 0 ? gendersymbols[1] : gendersymbols[0];
|
||||
|
||||
if (PKX.GetGenderFromString(CB_Form.Text) == 0 && Label_Gender.Text != gendersymbols[0])
|
||||
CB_Form.SelectedIndex = 1;
|
||||
else if (PKX.GetGenderFromString(CB_Form.Text) == 1 && Label_Gender.Text != gendersymbols[1])
|
||||
CB_Form.SelectedIndex = 0;
|
||||
fg = PKX.GetGenderFromString(Label_Gender.Text);
|
||||
fg = (fg ^ 1) & 1;
|
||||
Label_Gender.Text = Main.GenderSymbols[fg];
|
||||
}
|
||||
else
|
||||
{
|
||||
Label_Gender.Text = Main.GenderSymbols[fg];
|
||||
return;
|
||||
}
|
||||
|
||||
if (PKX.GetGenderFromString(CB_Form.Text) == 0 && Label_Gender.Text != gendersymbols[0])
|
||||
CB_Form.SelectedIndex = 1;
|
||||
else if (PKX.GetGenderFromString(CB_Form.Text) == 1 && Label_Gender.Text != gendersymbols[1])
|
||||
CB_Form.SelectedIndex = 0;
|
||||
|
||||
if (species == (int)Species.Pyroar)
|
||||
CB_Form.SelectedIndex = PKX.GetGenderFromString(Label_Gender.Text);
|
||||
|
|
|
@ -122,17 +122,17 @@ namespace PKHeX.WinForms
|
|||
for (int i = 0; i < CL.Length; i++)
|
||||
CL[i].Checked = Zukan.GetLanguageFlag(species - 1, i);
|
||||
|
||||
int gt = SAV.Personal[pk].Gender;
|
||||
var pi = SAV.Personal[pk];
|
||||
|
||||
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 != 0 && gt != 255; // Not Male-Only and Not Genderless
|
||||
CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = !pi.OnlyFemale;
|
||||
CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = !(pi.OnlyMale || pi.Genderless);
|
||||
|
||||
MT_Count.Text = Zukan.GetEncounterCount(species - 1).ToString();
|
||||
|
||||
CLB_FormsSeen.Items.Clear();
|
||||
CLB_FormDisplayed.Items.Clear();
|
||||
|
||||
int fc = SAV.Personal[species].FormeCount;
|
||||
int fc = pi.FormeCount;
|
||||
int f = DexFormUtil.GetDexFormIndexORAS(species, fc);
|
||||
if (f < 0)
|
||||
return;
|
||||
|
|
|
@ -132,15 +132,15 @@ namespace PKHeX.WinForms
|
|||
CHK_F1.Enabled = CHK_F1.Checked = false;
|
||||
}
|
||||
|
||||
int gt = SAV.Personal[pk].Gender;
|
||||
var pi = SAV.Personal[pk];
|
||||
|
||||
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 == 0 || (gt == 255)); // Not Male-Only and Not Genderless
|
||||
CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = !pi.OnlyFemale;
|
||||
CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = !(pi.OnlyMale || pi.Genderless);
|
||||
|
||||
CLB_FormsSeen.Items.Clear();
|
||||
CLB_FormDisplayed.Items.Clear();
|
||||
|
||||
int fc = SAV.Personal[species].FormeCount;
|
||||
int fc = pi.FormeCount;
|
||||
int f = DexFormUtil.GetDexFormIndexXY(species, fc);
|
||||
if (f < 0)
|
||||
return;
|
||||
|
|
|
@ -482,14 +482,15 @@ namespace PKHeX.WinForms
|
|||
|
||||
private void Label_Gender_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Get Gender Threshold
|
||||
int gt = SAV.Personal[WinFormsUtil.GetIndex(CB_Species)].Gender;
|
||||
|
||||
if (gt == 255 || gt == 0 || gt == 254) // Single gender/genderless
|
||||
return;
|
||||
|
||||
if (gt < 256) // If not a single gender(less) species:
|
||||
Label_Gender.Text = Main.GenderSymbols[PKX.GetGenderFromString(Label_Gender.Text) ^ 1];
|
||||
var species = WinFormsUtil.GetIndex(CB_Species);
|
||||
var pi = SAV.Personal[species];
|
||||
var fg = pi.FixedGender;
|
||||
if (fg == -1) // dual gender
|
||||
{
|
||||
fg = PKX.GetGenderFromString(Label_Gender.Text);
|
||||
fg = (fg ^ 1) & 1;
|
||||
}
|
||||
Label_Gender.Text = Main.GenderSymbols[fg];
|
||||
}
|
||||
|
||||
private void SetGenderLabel()
|
||||
|
|
Loading…
Add table
Reference in a new issue