From ed1b93437475f646c9b0351c66f2d57e32a8a4ac Mon Sep 17 00:00:00 2001 From: Kurt Date: Thu, 28 Sep 2017 22:20:27 -0700 Subject: [PATCH] Misc refactoring expose some useful IEnumerable methods (sorting / bin->pkm / copy) to simplify some common operations change some explicit arrays to IList for flexibility remove old memecrypto bool (no longer necessary as XP is not supported) rename some methods for more clarity --- PKHeX.Core/PKM/CK3.cs | 2 +- PKHeX.Core/PKM/PK3.cs | 4 +- PKHeX.Core/PKM/PKM.cs | 2 +- PKHeX.Core/PKM/PKX.cs | 57 ++++++++++- PKHeX.Core/PKM/XK3.cs | 2 +- PKHeX.Core/Saves/SAV7.cs | 2 - PKHeX.Core/Saves/SaveFile.cs | 94 +++++++------------ PKHeX.WinForms/Controls/PKM Editor/EditCK3.cs | 4 +- PKHeX.WinForms/Controls/PKM Editor/EditPK2.cs | 2 +- PKHeX.WinForms/Controls/PKM Editor/EditPK3.cs | 4 +- PKHeX.WinForms/Controls/PKM Editor/EditPK4.cs | 4 +- PKHeX.WinForms/Controls/PKM Editor/EditPK5.cs | 4 +- PKHeX.WinForms/Controls/PKM Editor/EditPK6.cs | 6 +- PKHeX.WinForms/Controls/PKM Editor/EditPK7.cs | 6 +- PKHeX.WinForms/Controls/PKM Editor/EditXK3.cs | 4 +- .../Controls/PKM Editor/PKMEditor.cs | 32 +++---- .../Controls/SAV Editor/SAVEditor.cs | 12 +-- .../Controls/SAV Editor/SlotChangeManager.cs | 2 +- PKHeX.WinForms/MainWindow/Main.cs | 6 +- .../Subforms/PKM Editors/BatchEditor.cs | 18 ++-- PKHeX.WinForms/Subforms/ReportGrid.cs | 4 +- PKHeX.WinForms/Subforms/SAV_Database.cs | 2 +- .../Save Editors/Gen6/SAV_HallOfFame.cs | 14 +-- .../Save Editors/Gen6/SAV_SecretBase.cs | 6 +- PKHeX.WinForms/Util/SAVUtil.cs | 4 +- 25 files changed, 159 insertions(+), 138 deletions(-) diff --git a/PKHeX.Core/PKM/CK3.cs b/PKHeX.Core/PKM/CK3.cs index 0be56f740..cb483d2cf 100644 --- a/PKHeX.Core/PKM/CK3.cs +++ b/PKHeX.Core/PKM/CK3.cs @@ -40,7 +40,7 @@ namespace PKHeX.Core public override int AltForm { get => Species == 201 ? PKX.GetUnownForm(PID) : 0; set { } } public override bool IsNicknamed { get => PKX.IsNicknamedAnyLanguage(Species, Nickname, Format); set { } } - public override int Gender { get => PKX.GetGender(Species, PID); set { } } + public override int Gender { get => PKX.GetGenderFromPID(Species, PID); set { } } public override int Characteristic => -1; public override int CurrentFriendship { get => OT_Friendship; set => OT_Friendship = value; } public override int Ability { get { int[] abils = PersonalTable.RS.GetAbilities(Species, 0); return abils[abils[1] == 0 ? 0 : AbilityNumber >> 1]; } set { } } diff --git a/PKHeX.Core/PKM/PK3.cs b/PKHeX.Core/PKM/PK3.cs index d5fca748d..0251a6eb9 100644 --- a/PKHeX.Core/PKM/PK3.cs +++ b/PKHeX.Core/PKM/PK3.cs @@ -37,7 +37,7 @@ namespace PKHeX.Core public override int AltForm { get => Species == 201 ? PKX.GetUnownForm(PID) : 0; set { } } public override bool IsNicknamed { get => PKX.IsNicknamedAnyLanguage(Species, Nickname, Format); set { } } - public override int Gender { get => PKX.GetGender(Species, PID); set { } } + public override int Gender { get => PKX.GetGenderFromPID(Species, PID); set { } } public override int Characteristic => -1; public override int CurrentFriendship { get => OT_Friendship; set => OT_Friendship = value; } public override int Ability { get { int[] abils = PersonalInfo.Abilities; return abils[AbilityBit && abils[1] != 0 ? 1 : 0]; } set { } } @@ -280,7 +280,7 @@ namespace PKHeX.Core // Set Final Data pk4.Met_Level = PKX.GetLevel(pk4.Species, pk4.EXP); - pk4.Gender = PKX.GetGender(pk4.Species, pk4.PID); + pk4.Gender = PKX.GetGenderFromPID(pk4.Species, pk4.PID); pk4.IsNicknamed = IsNicknamed; // Unown Form diff --git a/PKHeX.Core/PKM/PKM.cs b/PKHeX.Core/PKM/PKM.cs index e4b29d5f3..8b34ac73f 100644 --- a/PKHeX.Core/PKM/PKM.cs +++ b/PKHeX.Core/PKM/PKM.cs @@ -621,7 +621,7 @@ namespace PKHeX.Core if (GenNumber >= 6) return true; - return gender == PKX.GetGender(PID, gv); + return gender == PKX.GetGenderFromPIDAndRatio(PID, gv); } /// diff --git a/PKHeX.Core/PKM/PKX.cs b/PKHeX.Core/PKM/PKX.cs index 7d9d022bc..21dc6ad37 100644 --- a/PKHeX.Core/PKM/PKX.cs +++ b/PKHeX.Core/PKM/PKX.cs @@ -332,7 +332,7 @@ namespace PKHeX.Core /// /// Gender string /// Gender integer - public static int GetGender(string s) + public static int GetGenderFromPID(string s) { if (s == null) return -1; @@ -528,7 +528,7 @@ namespace PKHeX.Core return pid; // PID can be anything // Gen 3/4/5: Gender derived from PID - if (cg == GetGender(pid, gt)) + if (cg == GetGenderFromPIDAndRatio(pid, gt)) return pid; } } @@ -708,12 +708,12 @@ namespace PKHeX.Core /// Personality ID. /// Gender ID (0/1/2) /// This method should only be used for Generations 3-5 origin. - public static int GetGender(int species, uint PID) + public static int GetGenderFromPID(int species, uint PID) { int genderratio = Personal[species].Gender; - return GetGender(PID, genderratio); + return GetGenderFromPIDAndRatio(PID, genderratio); } - public static int GetGender(uint PID, int gr) + public static int GetGenderFromPIDAndRatio(uint PID, int gr) { switch (gr) { @@ -875,5 +875,52 @@ namespace PKHeX.Core IVs + " " + EVs, }; } + + /// + /// Copies an list to the destination list, with an option to copy to a starting point. + /// + /// Source list to copy from + /// Destination list/array + /// Starting point to copy to + public static void CopyTo(this IEnumerable list, IList dest, int start = 0) + { + int ctr = 0; + foreach (var z in list) + dest[start + ctr++] = z; + } + + /// + /// Gets an list of PKM data from a concatenated byte array binary. + /// + /// + /// Length of each PKM byte[] + /// Enumerable list of PKM byte arrays + public static IEnumerable GetPKMDataFromConcatenatedBinary(byte[] data, int len) + { + // split up data to individual pkm + for (int i = 0; i < data.Length; ++i) + { + int offset = i * len; + var pk = new byte[len]; + Buffer.BlockCopy(data, offset, pk, 0, len); + yield return pk; + } + } + + /// + /// Sorts an list of objects according to common-usage. + /// + /// Source list to sort + /// Enumerable list that is sorted + public static IEnumerable SortPKMs(IEnumerable list) + { + return list + .OrderBy(p => p.Species == 0) // empty slots at end + .ThenBy(p => p.IsEgg) // eggs to the end + .ThenBy(p => p.Species) // species sorted + .ThenBy(p => p.AltForm) // altforms sorted + .ThenBy(p => p.Gender) // gender sorted + .ThenBy(p => p.IsNicknamed); + } } } diff --git a/PKHeX.Core/PKM/XK3.cs b/PKHeX.Core/PKM/XK3.cs index b1bf9698b..e55f8b295 100644 --- a/PKHeX.Core/PKM/XK3.cs +++ b/PKHeX.Core/PKM/XK3.cs @@ -38,7 +38,7 @@ namespace PKHeX.Core public override int AltForm { get => Species == 201 ? PKX.GetUnownForm(PID) : 0; set { } } public override bool IsNicknamed { get => PKX.IsNicknamedAnyLanguage(Species, Nickname, Format); set { } } - public override int Gender { get => PKX.GetGender(Species, PID); set { } } + public override int Gender { get => PKX.GetGenderFromPID(Species, PID); set { } } public override int Characteristic => -1; public override int CurrentFriendship { get => OT_Friendship; set => OT_Friendship = value; } public override int Ability { get { int[] abils = PersonalTable.RS.GetAbilities(Species, 0); return abils[abils[1] == 0 ? 0 : AbilityNumber >> 1]; } set { } } diff --git a/PKHeX.Core/Saves/SAV7.cs b/PKHeX.Core/Saves/SAV7.cs index 9d5f264f1..74b8918fc 100644 --- a/PKHeX.Core/Saves/SAV7.cs +++ b/PKHeX.Core/Saves/SAV7.cs @@ -1302,8 +1302,6 @@ namespace PKHeX.Core // Data[0x1F22] = (byte)((Data[0x1F22] & 0xFE) | (value ? 1 : 0)); // event } - public override bool RequiresMemeCrypto => true; - public override string GetString(int Offset, int Count) => StringConverter.GetString7(Data, Offset, Count); public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) { diff --git a/PKHeX.Core/Saves/SaveFile.cs b/PKHeX.Core/Saves/SaveFile.cs index 8596232ec..029ae5bc6 100644 --- a/PKHeX.Core/Saves/SaveFile.cs +++ b/PKHeX.Core/Saves/SaveFile.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Diagnostics; using System.Linq; @@ -57,8 +58,8 @@ namespace PKHeX.Core return Header.Concat(Data).ToArray(); return Data; } - public virtual string MiscSaveChecks() { return ""; } - public virtual string MiscSaveInfo() { return ""; } + public virtual string MiscSaveChecks() => string.Empty; + public virtual string MiscSaveInfo() => string.Empty; public virtual GameVersion Version { get; protected set; } public abstract bool ChecksumsValid { get; } public abstract string ChecksumInfo { get; } @@ -149,7 +150,7 @@ namespace PKHeX.Core public int HoF { get; protected set; } = int.MinValue; // SAV Properties - public PKM[] BoxData + public IList BoxData { get { @@ -168,16 +169,16 @@ namespace PKHeX.Core { if (value == null) throw new ArgumentNullException(); - if (value.Length != BoxCount*BoxSlotCount) - throw new ArgumentException($"Expected {BoxCount*BoxSlotCount}, got {value.Length}"); + if (value.Count != BoxCount*BoxSlotCount) + throw new ArgumentException($"Expected {BoxCount*BoxSlotCount}, got {value.Count}"); if (value.Any(pk => PKMType != pk.GetType())) throw new ArgumentException($"Not {PKMType} array."); - for (int i = 0; i < value.Length; i++) + for (int i = 0; i < value.Count; i++) SetStoredSlot(value[i], GetBoxOffset(i/BoxSlotCount) + SIZE_STORED*(i%BoxSlotCount)); } } - public PKM[] PartyData + public IList PartyData { get { @@ -190,12 +191,12 @@ namespace PKHeX.Core { if (value == null) throw new ArgumentNullException(); - if (value.Length == 0 || value.Length > 6) - throw new ArgumentException("Expected 1-6, got " + value.Length); + if (value.Count == 0 || value.Count > 6) + throw new ArgumentException("Expected 1-6, got " + value.Count); if (value.Any(pk => PKMType != pk.GetType())) throw new ArgumentException($"Not {PKMType} array."); if (value[0].Species == 0) - Debug.WriteLine($"Empty first slot, received {value.Length}."); + Debug.WriteLine($"Empty first slot, received {value.Count}."); PKM[] newParty = value.Where(pk => pk.Species != 0).ToArray(); @@ -207,7 +208,7 @@ namespace PKHeX.Core SetPartySlot(newParty[i], GetPartyOffset(i)); } } - public PKM[] BattleBoxData + public IList BattleBoxData { get { @@ -368,7 +369,7 @@ namespace PKHeX.Core return false; var party = PartyData; - return party.Length == party.Where((t, i) => t.IsEgg || except.Contains(i)).Count(); + return party.Count == party.Where((t, i) => t.IsEgg || except.Contains(i)).Count(); } // Varied Methods @@ -435,7 +436,7 @@ namespace PKHeX.Core ++ctr; b = ctr++; } - Array.Copy(boxdata, len*i, Data, GetBoxOffset(b), len); + Buffer.BlockCopy(boxdata, len*i, Data, GetBoxOffset(b), len); SetBoxName(b, boxNames[i]); SetBoxWallpaper(b, boxWallpapers[i]); } @@ -467,9 +468,9 @@ namespace PKHeX.Core int b2o = GetBoxOffset(box2); int len = BoxSlotCount*SIZE_STORED; byte[] b1 = new byte[len]; - Array.Copy(Data, b1o, b1, 0, len); - Array.Copy(Data, b2o, Data, b1o, len); - Array.Copy(b1, 0, Data, b2o, len); + Buffer.BlockCopy(Data, b1o, b1, 0, len); + Buffer.BlockCopy(Data, b2o, Data, b1o, len); + Buffer.BlockCopy(b1, 0, Data, b2o, len); // Name string b1n = GetBoxName(box1); @@ -570,20 +571,15 @@ namespace PKHeX.Core public void SortBoxes(int BoxStart = 0, int BoxEnd = -1) { - PKM[] BD = BoxData; - var Section = BD.Skip(BoxStart*BoxSlotCount); + var BD = BoxData; + int start = BoxSlotCount * BoxStart; + var Section = BD.Skip(start); if (BoxEnd > BoxStart) - Section = Section.Take(BoxSlotCount*(BoxEnd - BoxStart)); + Section = Section.Take(BoxSlotCount * (BoxEnd - BoxStart)); - var Sorted = Section - .OrderBy(p => p.Species == 0) // empty slots at end - .ThenBy(p => p.IsEgg) // eggs to the end - .ThenBy(p => p.Species) // species sorted - .ThenBy(p => p.AltForm) // altforms sorted - .ThenBy(p => p.Gender) // gender sorted - .ThenBy(p => p.IsNicknamed).ToArray(); + var Sorted = PKX.SortPKMs(Section); - Array.Copy(Sorted, 0, BD, BoxStart*BoxSlotCount, Sorted.Length); + Sorted.CopyTo(BD, start); BoxData = BD; } public void ClearBoxes(int BoxStart = 0, int BoxEnd = -1) @@ -612,43 +608,25 @@ namespace PKHeX.Core if (data.Length != PCBinary.Length) return false; - int len = BlankPKM.EncryptedBoxData.Length; - - // split up data to individual pkm - byte[][] pkdata = new byte[data.Length/len][]; - for (int i = 0; i < data.Length; i += len) - { - pkdata[i/len] = new byte[len]; - Array.Copy(data, i, pkdata[i/len], 0, len); - } - - PKM[] pkms = BoxData; - for (int i = 0; i < pkms.Length; i++) - pkms[i] = GetPKM(DecryptPKM(pkdata[i])); - BoxData = pkms; + var BD = BoxData; + var pkdata = PKX.GetPKMDataFromConcatenatedBinary(data, BlankPKM.EncryptedBoxData.Length); + pkdata.Select(z => GetPKM(DecryptPKM(z))).CopyTo(BD); + BoxData = BD; return true; } public bool SetBoxBinary(byte[] data, int box) { - if (LockedSlots.Any(slot => box * BoxSlotCount <= slot && slot < (box + 1) * BoxSlotCount)) + int start = box * BoxSlotCount; + int end = start + BoxSlotCount; + if (LockedSlots.Any(slot => start <= slot && slot < end)) return false; if (data.Length != GetBoxBinary(box).Length) return false; - int len = BlankPKM.EncryptedBoxData.Length; - - // split up data to individual pkm - byte[][] pkdata = new byte[data.Length/len][]; - for (int i = 0; i < data.Length; i += len) - { - pkdata[i/len] = new byte[len]; - Array.Copy(data, i, pkdata[i/len], 0, len); - } - - PKM[] pkms = BoxData; - for (int i = 0; i < BoxSlotCount; i++) - pkms[box*BoxSlotCount + i] = GetPKM(DecryptPKM(pkdata[i])); - BoxData = pkms; + var BD = BoxData; + var pkdata = PKX.GetPKMDataFromConcatenatedBinary(data, BlankPKM.EncryptedBoxData.Length); + pkdata.Select(z => GetPKM(DecryptPKM(z))).CopyTo(BD, start); + BoxData = BD; return true; } @@ -668,7 +646,7 @@ namespace PKHeX.Core return null; byte[] data = new byte[Length]; - Array.Copy(Data, Offset, data, 0, Length); + Buffer.BlockCopy(Data, Offset, data, 0, Length); return data; } public void SetData(byte[] input, int Offset) @@ -680,8 +658,6 @@ namespace PKHeX.Core public abstract string GetString(int Offset, int Length); public abstract byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0); - public virtual bool RequiresMemeCrypto => false; - public virtual string EBerryName => string.Empty; public virtual bool IsEBerryIsEnigma => true; } diff --git a/PKHeX.WinForms/Controls/PKM Editor/EditCK3.cs b/PKHeX.WinForms/Controls/PKM Editor/EditCK3.cs index 893e4f5e4..086d44879 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/EditCK3.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/EditCK3.cs @@ -137,7 +137,7 @@ namespace PKHeX.WinForms.Controls ck3.AbilityNumber = 1 << CB_Ability.SelectedIndex; // to match gen6+ ck3.FatefulEncounter = CHK_Fateful.Checked; - ck3.Gender = PKX.GetGender(Label_Gender.Text); + ck3.Gender = PKX.GetGenderFromPID(Label_Gender.Text); ck3.EV_HP = Util.ToInt32(TB_HPEV.Text); ck3.EV_ATK = Util.ToInt32(TB_ATKEV.Text); ck3.EV_DEF = Util.ToInt32(TB_DEFEV.Text); @@ -182,7 +182,7 @@ namespace PKHeX.WinForms.Controls ck3.Ball = WinFormsUtil.GetIndex(CB_Ball); ck3.Met_Level = Util.ToInt32(TB_MetLevel.Text); - ck3.OT_Gender = PKX.GetGender(Label_OTGender.Text); + ck3.OT_Gender = PKX.GetGenderFromPID(Label_OTGender.Text); ck3.Version = WinFormsUtil.GetIndex(CB_GameOrigin); ck3.Language = WinFormsUtil.GetIndex(CB_Language); diff --git a/PKHeX.WinForms/Controls/PKM Editor/EditPK2.cs b/PKHeX.WinForms/Controls/PKM Editor/EditPK2.cs index c38448cff..f8a02d7e6 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/EditPK2.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/EditPK2.cs @@ -91,7 +91,7 @@ namespace PKHeX.WinForms.Controls pk2.HeldItem = WinFormsUtil.GetIndex(CB_HeldItem); pk2.IsEgg = CHK_IsEgg.Checked; pk2.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); - pk2.OT_Gender = PKX.GetGender(Label_OTGender.Text); + pk2.OT_Gender = PKX.GetGenderFromPID(Label_OTGender.Text); pk2.Met_Level = Util.ToInt32(TB_MetLevel.Text); pk2.Met_Location = WinFormsUtil.GetIndex(CB_MetLocation); pk2.Met_TimeOfDay = CB_MetTimeOfDay.SelectedIndex; diff --git a/PKHeX.WinForms/Controls/PKM Editor/EditPK3.cs b/PKHeX.WinForms/Controls/PKM Editor/EditPK3.cs index 10e6f9129..cedef184c 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/EditPK3.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/EditPK3.cs @@ -116,7 +116,7 @@ namespace PKHeX.WinForms.Controls pk3.AbilityNumber = 1 << CB_Ability.SelectedIndex; // to match gen6+ pk3.FatefulEncounter = CHK_Fateful.Checked; - pk3.Gender = PKX.GetGender(Label_Gender.Text); + pk3.Gender = PKX.GetGenderFromPID(Label_Gender.Text); pk3.EV_HP = Util.ToInt32(TB_HPEV.Text); pk3.EV_ATK = Util.ToInt32(TB_ATKEV.Text); pk3.EV_DEF = Util.ToInt32(TB_DEFEV.Text); @@ -161,7 +161,7 @@ namespace PKHeX.WinForms.Controls pk3.Ball = WinFormsUtil.GetIndex(CB_Ball); pk3.Met_Level = Util.ToInt32(TB_MetLevel.Text); - pk3.OT_Gender = PKX.GetGender(Label_OTGender.Text); + pk3.OT_Gender = PKX.GetGenderFromPID(Label_OTGender.Text); pk3.Version = WinFormsUtil.GetIndex(CB_GameOrigin); pk3.Language = WinFormsUtil.GetIndex(CB_Language); diff --git a/PKHeX.WinForms/Controls/PKM Editor/EditPK4.cs b/PKHeX.WinForms/Controls/PKM Editor/EditPK4.cs index bfdace358..3a0af744a 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/EditPK4.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/EditPK4.cs @@ -158,7 +158,7 @@ namespace PKHeX.WinForms.Controls } pk4.FatefulEncounter = CHK_Fateful.Checked; - pk4.Gender = PKX.GetGender(Label_Gender.Text); + pk4.Gender = PKX.GetGenderFromPID(Label_Gender.Text); pk4.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; pk4.EV_HP = Util.ToInt32(TB_HPEV.Text); pk4.EV_ATK = Util.ToInt32(TB_ATKEV.Text); @@ -204,7 +204,7 @@ namespace PKHeX.WinForms.Controls pk4.Ball = WinFormsUtil.GetIndex(CB_Ball); pk4.Met_Level = Util.ToInt32(TB_MetLevel.Text); - pk4.OT_Gender = PKX.GetGender(Label_OTGender.Text); + pk4.OT_Gender = PKX.GetGenderFromPID(Label_OTGender.Text); pk4.EncounterType = WinFormsUtil.GetIndex(CB_EncounterType); pk4.Version = WinFormsUtil.GetIndex(CB_GameOrigin); pk4.Language = WinFormsUtil.GetIndex(CB_Language); diff --git a/PKHeX.WinForms/Controls/PKM Editor/EditPK5.cs b/PKHeX.WinForms/Controls/PKM Editor/EditPK5.cs index 076e68e3e..8687962ef 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/EditPK5.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/EditPK5.cs @@ -157,7 +157,7 @@ namespace PKHeX.WinForms.Controls pk5.Nature = (byte)WinFormsUtil.GetIndex(CB_Nature); pk5.FatefulEncounter = CHK_Fateful.Checked; - pk5.Gender = PKX.GetGender(Label_Gender.Text); + pk5.Gender = PKX.GetGenderFromPID(Label_Gender.Text); pk5.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; pk5.EV_HP = Util.ToInt32(TB_HPEV.Text); pk5.EV_ATK = Util.ToInt32(TB_ATKEV.Text); @@ -221,7 +221,7 @@ namespace PKHeX.WinForms.Controls pk5.Ball = WinFormsUtil.GetIndex(CB_Ball); pk5.Met_Level = Util.ToInt32(TB_MetLevel.Text); - pk5.OT_Gender = PKX.GetGender(Label_OTGender.Text); + pk5.OT_Gender = PKX.GetGenderFromPID(Label_OTGender.Text); pk5.EncounterType = WinFormsUtil.GetIndex(CB_EncounterType); pk5.Version = WinFormsUtil.GetIndex(CB_GameOrigin); pk5.Language = WinFormsUtil.GetIndex(CB_Language); diff --git a/PKHeX.WinForms/Controls/PKM Editor/EditPK6.cs b/PKHeX.WinForms/Controls/PKM Editor/EditPK6.cs index 04f92e5c4..90ff8698d 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/EditPK6.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/EditPK6.cs @@ -172,7 +172,7 @@ namespace PKHeX.WinForms.Controls pk6.PID = Util.GetHexValue(TB_PID.Text); pk6.Nature = (byte)WinFormsUtil.GetIndex(CB_Nature); pk6.FatefulEncounter = CHK_Fateful.Checked; - pk6.Gender = PKX.GetGender(Label_Gender.Text); + pk6.Gender = PKX.GetGenderFromPID(Label_Gender.Text); pk6.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; pk6.EV_HP = Util.ToInt32(TB_HPEV.Text); // EVs pk6.EV_ATK = Util.ToInt32(TB_ATKEV.Text); @@ -234,7 +234,7 @@ namespace PKHeX.WinForms.Controls pk6.HT_Name = TB_OTt2.Text; // 0x90-0xAF - pk6.HT_Gender = PKX.GetGender(Label_CTGender.Text) & 1; + pk6.HT_Gender = PKX.GetGenderFromPID(Label_CTGender.Text) & 1; // Plus more, set by MemoryAmie (already in buff) // Block D @@ -262,7 +262,7 @@ namespace PKHeX.WinForms.Controls pk6.Ball = WinFormsUtil.GetIndex(CB_Ball); pk6.Met_Level = Util.ToInt32(TB_MetLevel.Text); - pk6.OT_Gender = PKX.GetGender(Label_OTGender.Text); + pk6.OT_Gender = PKX.GetGenderFromPID(Label_OTGender.Text); pk6.EncounterType = WinFormsUtil.GetIndex(CB_EncounterType); pk6.Version = WinFormsUtil.GetIndex(CB_GameOrigin); pk6.Country = WinFormsUtil.GetIndex(CB_Country); diff --git a/PKHeX.WinForms/Controls/PKM Editor/EditPK7.cs b/PKHeX.WinForms/Controls/PKM Editor/EditPK7.cs index e3b798580..60af92e0b 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/EditPK7.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/EditPK7.cs @@ -171,7 +171,7 @@ namespace PKHeX.WinForms.Controls pk7.PID = Util.GetHexValue(TB_PID.Text); pk7.Nature = (byte)WinFormsUtil.GetIndex(CB_Nature); pk7.FatefulEncounter = CHK_Fateful.Checked; - pk7.Gender = PKX.GetGender(Label_Gender.Text); + pk7.Gender = PKX.GetGenderFromPID(Label_Gender.Text); pk7.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; pk7.EV_HP = Util.ToInt32(TB_HPEV.Text); // EVs pk7.EV_ATK = Util.ToInt32(TB_ATKEV.Text); @@ -233,7 +233,7 @@ namespace PKHeX.WinForms.Controls pk7.HT_Name = TB_OTt2.Text; // 0x90-0xAF - pk7.HT_Gender = PKX.GetGender(Label_CTGender.Text) & 1; + pk7.HT_Gender = PKX.GetGenderFromPID(Label_CTGender.Text) & 1; // Plus more, set by MemoryAmie (already in buff) // Block D @@ -261,7 +261,7 @@ namespace PKHeX.WinForms.Controls pk7.Ball = WinFormsUtil.GetIndex(CB_Ball); pk7.Met_Level = Util.ToInt32(TB_MetLevel.Text); - pk7.OT_Gender = PKX.GetGender(Label_OTGender.Text); + pk7.OT_Gender = PKX.GetGenderFromPID(Label_OTGender.Text); pk7.EncounterType = WinFormsUtil.GetIndex(CB_EncounterType); pk7.Version = WinFormsUtil.GetIndex(CB_GameOrigin); pk7.Country = WinFormsUtil.GetIndex(CB_Country); diff --git a/PKHeX.WinForms/Controls/PKM Editor/EditXK3.cs b/PKHeX.WinForms/Controls/PKM Editor/EditXK3.cs index aaf12a823..df14db738 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/EditXK3.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/EditXK3.cs @@ -137,7 +137,7 @@ namespace PKHeX.WinForms.Controls xk3.AbilityNumber = 1 << CB_Ability.SelectedIndex; // to match gen6+ xk3.FatefulEncounter = CHK_Fateful.Checked; - xk3.Gender = PKX.GetGender(Label_Gender.Text); + xk3.Gender = PKX.GetGenderFromPID(Label_Gender.Text); xk3.EV_HP = Util.ToInt32(TB_HPEV.Text); xk3.EV_ATK = Util.ToInt32(TB_ATKEV.Text); xk3.EV_DEF = Util.ToInt32(TB_DEFEV.Text); @@ -182,7 +182,7 @@ namespace PKHeX.WinForms.Controls xk3.Ball = WinFormsUtil.GetIndex(CB_Ball); xk3.Met_Level = Util.ToInt32(TB_MetLevel.Text); - xk3.OT_Gender = PKX.GetGender(Label_OTGender.Text); + xk3.OT_Gender = PKX.GetGenderFromPID(Label_OTGender.Text); xk3.Version = WinFormsUtil.GetIndex(CB_GameOrigin); xk3.Language = WinFormsUtil.GetIndex(CB_Language); diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs index 6f72d9e15..d1e937327 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs @@ -284,12 +284,12 @@ namespace PKHeX.WinForms.Controls TB_Nickname.Font = TB_OT.Font = TB_OTt2.Font = FontUtil.GetPKXFont(11); } // Switch active gender labels to new if they are active. - if (PKX.GetGender(Label_Gender.Text) < 2) - Label_Gender.Text = gendersymbols[PKX.GetGender(Label_Gender.Text)]; - if (PKX.GetGender(Label_OTGender.Text) < 2) - Label_OTGender.Text = gendersymbols[PKX.GetGender(Label_OTGender.Text)]; - if (PKX.GetGender(Label_CTGender.Text) < 2) - Label_CTGender.Text = gendersymbols[PKX.GetGender(Label_CTGender.Text)]; + if (PKX.GetGenderFromPID(Label_Gender.Text) < 2) + Label_Gender.Text = gendersymbols[PKX.GetGenderFromPID(Label_Gender.Text)]; + if (PKX.GetGenderFromPID(Label_OTGender.Text) < 2) + Label_OTGender.Text = gendersymbols[PKX.GetGenderFromPID(Label_OTGender.Text)]; + if (PKX.GetGenderFromPID(Label_CTGender.Text) < 2) + Label_CTGender.Text = gendersymbols[PKX.GetGenderFromPID(Label_CTGender.Text)]; } private void UpdateSprite() { @@ -446,7 +446,7 @@ namespace PKHeX.WinForms.Controls private void UpdateGender() { - int cg = PKX.GetGender(Label_Gender.Text); + int cg = PKX.GetGenderFromPID(Label_Gender.Text); int gt = pkm.PersonalInfo.Gender; int Gender; @@ -531,11 +531,11 @@ namespace PKHeX.WinForms.Controls if (gt >= 255) return; // If not a single gender(less) species: (should be <254 but whatever, 255 never happens) - int newGender = PKX.GetGender(Label_Gender.Text) ^ 1; + int newGender = PKX.GetGenderFromPID(Label_Gender.Text) ^ 1; if (pkm.Format <= 2) { do { TB_ATKIV.Text = (pkm.IV_ATK = (int)(Util.Rand32() & pkm.MaxIV)).ToString(); } - while (PKX.GetGender(Label_Gender.Text = gendersymbols[pkm.Gender]) != newGender); + while (PKX.GetGenderFromPID(Label_Gender.Text = gendersymbols[pkm.Gender]) != newGender); SetIsShiny(null); } else if (pkm.Format <= 4) @@ -553,8 +553,8 @@ namespace PKHeX.WinForms.Controls Label_Gender.Text = gendersymbols[pkm.Gender]; Label_Gender.ForeColor = GetGenderColor(pkm.Gender); - if (PKX.GetGender(CB_Form.Text) < 2) // Gendered Forms - CB_Form.SelectedIndex = PKX.GetGender(Label_Gender.Text); + if (PKX.GetGenderFromPID(CB_Form.Text) < 2) // Gendered Forms + CB_Form.SelectedIndex = PKX.GetGenderFromPID(Label_Gender.Text); UpdatePreviewSprite(Label_Gender, null); } @@ -644,7 +644,7 @@ namespace PKHeX.WinForms.Controls Label lbl = sender as Label; if (!string.IsNullOrWhiteSpace(lbl?.Text)) // set gender label (toggle M/F) { - int gender = PKX.GetGender(lbl.Text) ^ 1; + int gender = PKX.GetGenderFromPID(lbl.Text) ^ 1; lbl.Text = gendersymbols[gender]; lbl.ForeColor = GetGenderColor(gender); } @@ -1133,10 +1133,10 @@ namespace PKHeX.WinForms.Controls UpdateRandomIVs(null, null); } } - else if (PKX.GetGender(CB_Form.Text) < 2) + else if (PKX.GetGenderFromPID(CB_Form.Text) < 2) { if (CB_Form.Items.Count == 2) // actually M/F; Pumpkaboo formes in German are S,M,L,XL - Label_Gender.Text = gendersymbols[PKX.GetGender(CB_Form.Text)]; + Label_Gender.Text = gendersymbols[PKX.GetGenderFromPID(CB_Form.Text)]; } if (changingFields) @@ -1576,7 +1576,7 @@ namespace PKHeX.WinForms.Controls pkm.SID = Util.ToInt32(TB_SID.Text); pkm.PID = Util.GetHexValue(TB_PID.Text); pkm.Nature = WinFormsUtil.GetIndex(CB_Nature); - pkm.Gender = PKX.GetGender(Label_Gender.Text); + pkm.Gender = PKX.GetGenderFromPID(Label_Gender.Text); pkm.AltForm = CB_Form.SelectedIndex; pkm.Version = WinFormsUtil.GetIndex(CB_GameOrigin); @@ -1984,7 +1984,7 @@ namespace PKHeX.WinForms.Controls TB_Nickname.Text = Set.Nickname; if (Set.Gender != null) { - int Gender = PKX.GetGender(Set.Gender); + int Gender = PKX.GetGenderFromPID(Set.Gender); Label_Gender.Text = gendersymbols[Gender]; Label_Gender.ForeColor = GetGenderColor(Gender); } diff --git a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs index ddcee6c93..d43adb0ce 100644 --- a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs +++ b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs @@ -236,18 +236,18 @@ namespace PKHeX.WinForms.Controls // Refresh slots if (SAV.HasParty) { - PKM[] party = SAV.PartyData; - for (int i = 0; i < party.Length; i++) + var party = SAV.PartyData; + for (int i = 0; i < party.Count; i++) SlotPictureBoxes[i + 30].Image = GetSprite(party[i], i + 30); - for (int i = party.Length; i < 6; i++) + for (int i = party.Count; i < 6; i++) SlotPictureBoxes[i + 30].Image = null; } if (SAV.HasBattleBox) { - PKM[] battle = SAV.BattleBoxData; - for (int i = 0; i < battle.Length; i++) + var battle = SAV.BattleBoxData; + for (int i = 0; i < battle.Count; i++) SlotPictureBoxes[i + 36].Image = GetSprite(battle[i], i + 36); - for (int i = battle.Length; i < 6; i++) + for (int i = battle.Count; i < 6; i++) SlotPictureBoxes[i + 36].Image = null; } } diff --git a/PKHeX.WinForms/Controls/SAV Editor/SlotChangeManager.cs b/PKHeX.WinForms/Controls/SAV Editor/SlotChangeManager.cs index 8c97d13a3..566775ffc 100644 --- a/PKHeX.WinForms/Controls/SAV Editor/SlotChangeManager.cs +++ b/PKHeX.WinForms/Controls/SAV Editor/SlotChangeManager.cs @@ -236,7 +236,7 @@ namespace PKHeX.WinForms.Controls byte[] data = File.ReadAllBytes(file); MysteryGift mg = MysteryGift.GetMysteryGift(data, fi.Extension); PKM temp = mg?.ConvertToPKM(SAV) ?? PKMConverter.GetPKMfromBytes(data, - prefer: fi.Extension.Length > 0 ? (fi.Extension.Last() - 0x30) & 7 : SAV.Generation); + prefer: fi.Extension.Length > 0 ? (fi.Extension.Last() - '0') & 0xF : SAV.Generation); PKM pk = PKMConverter.ConvertToType(temp, SAV.PKMType, out string c); if (pk == null) diff --git a/PKHeX.WinForms/MainWindow/Main.cs b/PKHeX.WinForms/MainWindow/Main.cs index e9dbfbdea..1d9fe6ddd 100644 --- a/PKHeX.WinForms/MainWindow/Main.cs +++ b/PKHeX.WinForms/MainWindow/Main.cs @@ -435,7 +435,7 @@ namespace PKHeX.WinForms } private void ClickShowdownExportParty(object sender, EventArgs e) { - if (C_SAV.SAV.PartyData.Length <= 0) return; + if (C_SAV.SAV.PartyData.Count <= 0) return; try { Clipboard.SetText( @@ -447,7 +447,7 @@ namespace PKHeX.WinForms } private void ClickShowdownExportBattleBox(object sender, EventArgs e) { - if (C_SAV.SAV.BattleBoxData.Length <= 0) return; + if (C_SAV.SAV.BattleBoxData.Count <= 0) return; try { Clipboard.SetText( @@ -575,7 +575,7 @@ namespace PKHeX.WinForms } private bool TryLoadPKM(byte[] input, string path, string ext, SaveFile SAV) { - var temp = PKMConverter.GetPKMfromBytes(input, prefer: ext.Length > 0 ? (ext.Last() - 0x30) & 7 : C_SAV.SAV.Generation); + var temp = PKMConverter.GetPKMfromBytes(input, prefer: ext.Length > 0 ? (ext.Last() - '0') & 0xF : C_SAV.SAV.Generation); if (temp == null) return false; diff --git a/PKHeX.WinForms/Subforms/PKM Editors/BatchEditor.cs b/PKHeX.WinForms/Subforms/PKM Editors/BatchEditor.cs index 1d2f313dd..27f9fe91c 100644 --- a/PKHeX.WinForms/Subforms/PKM Editors/BatchEditor.cs +++ b/PKHeX.WinForms/Subforms/PKM Editors/BatchEditor.cs @@ -216,16 +216,16 @@ namespace PKHeX.WinForms } private void RunBatchEditSaveFile(StringInstruction[] Filters, StringInstruction[] Instructions) { - PKM[] data; + IList data; if (SAV.HasParty && process(data = SAV.PartyData)) SAV.PartyData = data; if (SAV.HasBox && process(data = SAV.BoxData)) SAV.BoxData = data; - bool process(PKM[] d) + bool process(IList d) { - SetupProgressBar(d.Length); + SetupProgressBar(d.Count); ProcessSAV(d, Filters, Instructions); - return d.Length != 0; + return d.Count != 0; } } @@ -247,17 +247,17 @@ namespace PKHeX.WinForms // Mass Editing private int ctr, len, err; - private void ProcessSAV(PKM[] data, StringInstruction[] Filters, StringInstruction[] Instructions) + private void ProcessSAV(IList data, StringInstruction[] Filters, StringInstruction[] Instructions) { - for (int i = 0; i < data.Length; i++) + for (int i = 0; i < data.Count; i++) { ProcessPKM(data[i], Filters, Instructions); b.ReportProgress(i); } } - private void ProcessFolder(string[] files, StringInstruction[] Filters, StringInstruction[] Instructions, string destPath) + private void ProcessFolder(IReadOnlyList files, StringInstruction[] Filters, StringInstruction[] Instructions, string destPath) { - for (int i = 0; i < files.Length; i++) + for (int i = 0; i < files.Count; i++) { string file = files[i]; var fi = new FileInfo(file); @@ -267,7 +267,7 @@ namespace PKHeX.WinForms continue; } - int format = fi.Extension.Length > 0 ? (fi.Extension.Last() - 0x30) & 7 : SAV.Generation; + int format = fi.Extension.Length > 0 ? (fi.Extension.Last() - '0') & 0xF : SAV.Generation; byte[] data = File.ReadAllBytes(file); var pkm = PKMConverter.GetPKMfromBytes(data, prefer: format); if (ProcessPKM(pkm, Filters, Instructions)) diff --git a/PKHeX.WinForms/Subforms/ReportGrid.cs b/PKHeX.WinForms/Subforms/ReportGrid.cs index 7959a1df5..bc7c31382 100644 --- a/PKHeX.WinForms/Subforms/ReportGrid.cs +++ b/PKHeX.WinForms/Subforms/ReportGrid.cs @@ -160,7 +160,7 @@ namespace PKHeX.WinForms dgData.ContextMenuStrip = mnu; } - public void PopulateData(PKM[] Data) + public void PopulateData(IList Data) { SuspendLayout(); BoxBar.Step = 1; @@ -174,7 +174,7 @@ namespace PKHeX.WinForms dgData.DataSource = PL; dgData.AutoGenerateColumns = true; - BoxBar.Maximum = Data.Length + dgData.Columns.Count; + BoxBar.Maximum = Data.Count + dgData.Columns.Count; for (int i = 0; i < dgData.Columns.Count; i++) { BoxBar.PerformStep(); diff --git a/PKHeX.WinForms/Subforms/SAV_Database.cs b/PKHeX.WinForms/Subforms/SAV_Database.cs index d4d36694f..f435179e6 100644 --- a/PKHeX.WinForms/Subforms/SAV_Database.cs +++ b/PKHeX.WinForms/Subforms/SAV_Database.cs @@ -334,7 +334,7 @@ namespace PKHeX.WinForms { FileInfo fi = new FileInfo(file); if (!fi.Extension.Contains(".pk") || !PKX.IsPKM(fi.Length)) return; - var pk = PKMConverter.GetPKMfromBytes(File.ReadAllBytes(file), file, prefer: (fi.Extension.Last() - 0x30) & 7); + var pk = PKMConverter.GetPKMfromBytes(File.ReadAllBytes(file), file, prefer: (fi.Extension.Last() - '0') & 0xF); if (pk != null) dbTemp.Add(pk); }); diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs index c244b3860..749e2b501 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs @@ -258,7 +258,7 @@ namespace PKHeX.WinForms uint rawslgf = BitConverter.ToUInt32(data, offset + 0x14); uint slgf = 0; slgf |= (uint)(CB_Form.SelectedIndex & 0x1F); - slgf |= (uint)((PKX.GetGender(Label_Gender.Text) & 0x3) << 5); + slgf |= (uint)((PKX.GetGenderFromPID(Label_Gender.Text) & 0x3) << 5); slgf |= (uint)((Convert.ToUInt16(TB_Level.Text) & 0x7F) << 7); if (CHK_Shiny.Checked) slgf |= 1 << 14; @@ -291,7 +291,7 @@ namespace PKHeX.WinForms vnd |= rawvnd & 0x80000000; Array.Copy(BitConverter.GetBytes(vnd), 0, data, offset + 0x1B0, 4); - bpkx.Image = PKMUtil.GetSprite(WinFormsUtil.GetIndex(CB_Species), CB_Form.SelectedIndex & 0x1F, PKX.GetGender(Label_Gender.Text), WinFormsUtil.GetIndex(CB_HeldItem), false, CHK_Shiny.Checked); + bpkx.Image = PKMUtil.GetSprite(WinFormsUtil.GetIndex(CB_Species), CB_Form.SelectedIndex & 0x1F, PKX.GetGenderFromPID(Label_Gender.Text), WinFormsUtil.GetIndex(CB_HeldItem), false, CHK_Shiny.Checked); DisplayEntry(null, null); // refresh text view } private void Validate_TextBoxes() @@ -340,7 +340,7 @@ namespace PKHeX.WinForms { if (!editing) return; //Don't do writing until loaded - bpkx.Image = PKMUtil.GetSprite(WinFormsUtil.GetIndex(CB_Species), CB_Form.SelectedIndex & 0x1F, PKX.GetGender(Label_Gender.Text), WinFormsUtil.GetIndex(CB_HeldItem), false, CHK_Shiny.Checked); + bpkx.Image = PKMUtil.GetSprite(WinFormsUtil.GetIndex(CB_Species), CB_Form.SelectedIndex & 0x1F, PKX.GetGenderFromPID(Label_Gender.Text), WinFormsUtil.GetIndex(CB_HeldItem), false, CHK_Shiny.Checked); Write_Entry(null, null); } @@ -362,16 +362,16 @@ namespace PKHeX.WinForms if (gt < 256) // If not a single gender(less) species: { - Label_Gender.Text = PKX.GetGender(Label_Gender.Text) == 0 ? gendersymbols[1] : gendersymbols[0]; + Label_Gender.Text = PKX.GetGenderFromPID(Label_Gender.Text) == 0 ? gendersymbols[1] : gendersymbols[0]; - if (PKX.GetGender(CB_Form.Text) == 0 && Label_Gender.Text != gendersymbols[0]) + if (PKX.GetGenderFromPID(CB_Form.Text) == 0 && Label_Gender.Text != gendersymbols[0]) CB_Form.SelectedIndex = 1; - else if (PKX.GetGender(CB_Form.Text) == 1 && Label_Gender.Text != gendersymbols[1]) + else if (PKX.GetGenderFromPID(CB_Form.Text) == 1 && Label_Gender.Text != gendersymbols[1]) CB_Form.SelectedIndex = 0; } if (species == 668) - CB_Form.SelectedIndex = PKX.GetGender(Label_Gender.Text); + CB_Form.SelectedIndex = PKX.GetGenderFromPID(Label_Gender.Text); Write_Entry(null, null); } diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_SecretBase.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_SecretBase.cs index 43dc961bd..3c54ea77d 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_SecretBase.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_SecretBase.cs @@ -275,7 +275,7 @@ namespace PKHeX.WinForms pkm[0x14] = (byte)WinFormsUtil.GetIndex(CB_Nature); int fegform = 0; - fegform += PKX.GetGender(Label_Gender.Text) << 1; + fegform += PKX.GetGenderFromPID(Label_Gender.Text) << 1; fegform += CB_Form.SelectedIndex << 3; pkm[0x15] = (byte)fegform; @@ -463,7 +463,7 @@ namespace PKHeX.WinForms SetAbilityList(); // If form has a single gender, account for it. - if (PKX.GetGender(CB_Form.Text) < 2) + if (PKX.GetGenderFromPID(CB_Form.Text) < 2) Label_Gender.Text = Main.GenderSymbols[CB_Form.SelectedIndex]; } @@ -477,7 +477,7 @@ namespace PKHeX.WinForms return; if (gt < 256) // If not a single gender(less) species: - Label_Gender.Text = Main.GenderSymbols[PKX.GetGender(Label_Gender.Text) ^ 1]; + Label_Gender.Text = Main.GenderSymbols[PKX.GetGenderFromPID(Label_Gender.Text) ^ 1]; } private void SetGenderLabel() { diff --git a/PKHeX.WinForms/Util/SAVUtil.cs b/PKHeX.WinForms/Util/SAVUtil.cs index 9568bf05b..81d20a597 100644 --- a/PKHeX.WinForms/Util/SAVUtil.cs +++ b/PKHeX.WinForms/Util/SAVUtil.cs @@ -22,7 +22,7 @@ namespace PKHeX.WinForms /// public static bool DumpBoxes(this SaveFile SAV, string path, out string result, bool boxFolders = false) { - PKM[] boxdata = SAV.BoxData; + var boxdata = SAV.BoxData; if (boxdata == null) { result = "Invalid Box Data, unable to dump."; return false; } @@ -58,7 +58,7 @@ namespace PKHeX.WinForms /// public static bool DumpBox(this SaveFile SAV, string path, out string result, int currentBox) { - PKM[] boxdata = SAV.BoxData; + var boxdata = SAV.BoxData; if (boxdata == null) { result = "Invalid Box Data, unable to dump."; return false; }