From 934595126fc12bad3c5decc2a011bdbbc09c7328 Mon Sep 17 00:00:00 2001 From: Kurt Date: Mon, 15 Apr 2019 15:43:48 -0700 Subject: [PATCH] Simplify qr gender use personalinfo object to do majority of work, end result has the 4 sequential bytes set neatly --- PKHeX.Core/Saves/Substructures/Gen7/QR7.cs | 37 +++++++++------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/PKHeX.Core/Saves/Substructures/Gen7/QR7.cs b/PKHeX.Core/Saves/Substructures/Gen7/QR7.cs index d99d2c816..779becf21 100644 --- a/PKHeX.Core/Saves/Substructures/Gen7/QR7.cs +++ b/PKHeX.Core/Saves/Substructures/Gen7/QR7.cs @@ -40,7 +40,7 @@ public static class QR7 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; @@ -48,29 +48,22 @@ private static byte[] GetRawQR(int species, int formnum, bool shiny, int gender) { var basedata = (byte[])BaseQR.Clone(); BitConverter.GetBytes((ushort)species).CopyTo(basedata, 0x28); + + var pi = PersonalTable.USUM.GetFormeEntry(species, formnum); + bool biGender = false; + if (pi.OnlyMale) + gender = 0; + else if (pi.OnlyFemale) + gender = 1; + else if (pi.Genderless) + gender = 2; + else + biGender = !GenderDifferences.Contains(species); + basedata[0x2A] = (byte)formnum; + basedata[0x2B] = (byte)gender; basedata[0x2C] = (byte)(shiny ? 1 : 0); - var forme_index = PersonalTable.USUM[species].FormeIndex(species, formnum); - var raw_gender = PersonalTable.USUM[forme_index].Gender; - switch (raw_gender) - { - case 0: - basedata[0x2D] = 0; - basedata[0x2B] = 0; - break; - case 0xFE: - basedata[0x2D] = 0; - basedata[0x2B] = 1; - break; - case 0xFF: - basedata[0x2D] = 0; - basedata[0x2B] = 2; - break; - default: - basedata[0x2D] = (byte)(GenderDifferences.Contains(species) ? 0 : 1); - basedata[0x2B] = (byte)gender; - break; - } + basedata[0x2D] = (byte)(biGender ? 1 : 0); return basedata; }