From 9f8edc89bfbfed3f9bf139fc0561f945aceafbed Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 30 Jun 2018 09:59:48 -0700 Subject: [PATCH] Refactoring put some string[] behind IReadOnlyList to prevent any consumer from modifying it --- PKHeX.Core/Editing/ShowdownSet.cs | 2 +- PKHeX.Core/Game/GameStrings/GameInfo.cs | 24 +++---- PKHeX.Core/Game/GameStrings/GameStrings.cs | 68 +++++++++++-------- PKHeX.Core/Game/IBasicStrings.cs | 16 +++-- PKHeX.Core/PKM/Shared/QRPKM.cs | 2 +- PKHeX.Core/PKM/Util/PKMSorting.cs | 4 +- PKHeX.Core/Util/DataUtil.cs | 8 +-- .../Controls/PKM Editor/PKMEditor.cs | 2 +- .../Controls/SAV Editor/SAVEditor.cs | 15 ++-- PKHeX.WinForms/Subforms/KChart.cs | 2 +- .../Subforms/Save Editors/Gen3/SAV_Misc3.cs | 2 +- .../Subforms/Save Editors/Gen4/SAV_Misc4.cs | 2 +- .../Save Editors/Gen7/SAV_Trainer7.cs | 2 +- .../Subforms/Save Editors/SAV_Inventory.cs | 2 +- .../Subforms/Save Editors/SAV_MailBox.cs | 2 +- 15 files changed, 81 insertions(+), 72 deletions(-) diff --git a/PKHeX.Core/Editing/ShowdownSet.cs b/PKHeX.Core/Editing/ShowdownSet.cs index 5669b144e..4aa0dc5b6 100644 --- a/PKHeX.Core/Editing/ShowdownSet.cs +++ b/PKHeX.Core/Editing/ShowdownSet.cs @@ -76,7 +76,7 @@ private void LoadLines(IEnumerable lines) Form = ConvertFormFromShowdown(Form, Species, Ability); // Set Form string[] formStrings = PKX.GetFormList(Species, types, forms, genderForms); - FormIndex = Math.Max(0, Array.FindIndex(formStrings, z => z.Contains(Form ?? ""))); + FormIndex = string.IsNullOrWhiteSpace(Form) ? 0 : Math.Max(0, Array.FindIndex(formStrings, z => z.Contains(Form))); } private void ParseLines(IEnumerable lines) { diff --git a/PKHeX.Core/Game/GameStrings/GameInfo.cs b/PKHeX.Core/Game/GameStrings/GameInfo.cs index e6572f236..cc95ff53d 100644 --- a/PKHeX.Core/Game/GameStrings/GameInfo.cs +++ b/PKHeX.Core/Game/GameStrings/GameInfo.cs @@ -45,15 +45,15 @@ public static string[] GetStrings(string ident, string lang, string type = "text } // DataSource providing - public static List ItemDataSource => Strings.ItemDataSource; - public static List SpeciesDataSource => Strings.SpeciesDataSource; - public static List BallDataSource => Strings.BallDataSource; - public static List NatureDataSource => Strings.NatureDataSource; - public static List AbilityDataSource => Strings.AbilityDataSource; - public static List VersionDataSource => Strings.VersionDataSource; - public static List LegalMoveDataSource => Strings.LegalMoveDataSource; - public static List HaXMoveDataSource => Strings.HaXMoveDataSource; - public static List MoveDataSource => Strings.MoveDataSource; + public static IReadOnlyList ItemDataSource => Strings.ItemDataSource; + public static IReadOnlyList SpeciesDataSource => Strings.SpeciesDataSource; + public static IReadOnlyList BallDataSource => Strings.BallDataSource; + public static IReadOnlyList NatureDataSource => Strings.NatureDataSource; + public static IReadOnlyList AbilityDataSource => Strings.AbilityDataSource; + public static IReadOnlyList VersionDataSource => Strings.VersionDataSource; + public static IReadOnlyList LegalMoveDataSource => Strings.LegalMoveDataSource; + public static IReadOnlyList HaXMoveDataSource => Strings.HaXMoveDataSource; + public static IReadOnlyList MoveDataSource => Strings.MoveDataSource; /// @@ -144,7 +144,7 @@ private static string GetRegionString(int country, int region, int language) /// Generation to get location names for. /// BankID used to choose the text bank. /// List of location names. - private static string[] GetLocationNames(int gen, int bankID) + private static IReadOnlyList GetLocationNames(int gen, int bankID) { switch (gen) { @@ -231,7 +231,7 @@ public static string GetLocationName(bool eggmet, int locval, int format, int ge } var bank = GetLocationNames(gen, bankID); - if (bank == null || bank.Length <= locval) + if (bank == null || bank.Count <= locval) return string.Empty; return bank[locval]; } @@ -243,7 +243,7 @@ public static string GetLocationName(bool eggmet, int locval, int format, int ge /// Generation to retrieve for /// Egg Locations are to be retrieved instead of regular Met Locations /// Consumable list of met locations - public static List GetLocationList(GameVersion version, int pkmFormat, bool egg = false) + public static IReadOnlyList GetLocationList(GameVersion version, int pkmFormat, bool egg = false) { return Strings.GetLocationList(version, pkmFormat, egg); } diff --git a/PKHeX.Core/Game/GameStrings/GameStrings.cs b/PKHeX.Core/Game/GameStrings/GameStrings.cs index 57178184b..f85e0f3b5 100644 --- a/PKHeX.Core/Game/GameStrings/GameStrings.cs +++ b/PKHeX.Core/Game/GameStrings/GameStrings.cs @@ -26,12 +26,12 @@ public class GameStrings : IBasicStrings private readonly string lang; public string EggName => eggname; - public string[] Species => specieslist; - public string[] Item => itemlist; - public string[] Move => movelist; - public string[] Ability => abilitylist; - public string[] Types => types; - public string[] Natures => natures; + public IReadOnlyList Species => specieslist; + public IReadOnlyList Item => itemlist; + public IReadOnlyList Move => movelist; + public IReadOnlyList Ability => abilitylist; + public IReadOnlyList Types => types; + public IReadOnlyList Natures => natures; private string[] Get(string ident) => GameInfo.GetStrings(ident, lang); @@ -240,7 +240,7 @@ private void SanitizeMetG7SM() metSM_30000[i] += " (-)"; } - public string[] GetItemStrings(int generation, GameVersion game = GameVersion.Any) + public IReadOnlyList GetItemStrings(int generation, GameVersion game = GameVersion.Any) { switch (generation) { @@ -271,23 +271,23 @@ private string[] GetItemStrings3(GameVersion game) } // DataSource providing - public List ItemDataSource { get; private set; } - public List SpeciesDataSource { get; private set; } - public List BallDataSource { get; private set; } - public List NatureDataSource { get; private set; } - public List AbilityDataSource { get; private set; } - public List VersionDataSource { get; private set; } - public List LegalMoveDataSource { get; private set; } - public List HaXMoveDataSource { get; private set; } - public List MoveDataSource { get; set; } + public IReadOnlyList ItemDataSource { get; private set; } + public IReadOnlyList SpeciesDataSource { get; private set; } + public IReadOnlyList BallDataSource { get; private set; } + public IReadOnlyList NatureDataSource { get; private set; } + public IReadOnlyList AbilityDataSource { get; private set; } + public IReadOnlyList VersionDataSource { get; private set; } + public IReadOnlyList LegalMoveDataSource { get; private set; } + public IReadOnlyList HaXMoveDataSource { get; private set; } + public IReadOnlyList MoveDataSource { get; set; } - private List MetGen2 { get; set; } - private List MetGen3 { get; set; } - private List MetGen3CXD { get; set; } - private List MetGen4 { get; set; } - private List MetGen5 { get; set; } - private List MetGen6 { get; set; } - private List MetGen7 { get; set; } + private IReadOnlyList MetGen2 { get; set; } + private IReadOnlyList MetGen3 { get; set; } + private IReadOnlyList MetGen3CXD { get; set; } + private IReadOnlyList MetGen4 { get; set; } + private IReadOnlyList MetGen5 { get; set; } + private IReadOnlyList MetGen6 { get; set; } + private IReadOnlyList MetGen7 { get; set; } public MemoryStrings Memories { get; private set; } @@ -299,10 +299,7 @@ private void InitializeDataSources() SpeciesDataSource = Util.GetCBList(specieslist, null); NatureDataSource = Util.GetCBList(natures, null); AbilityDataSource = Util.GetCBList(abilitylist, null); - VersionDataSource = Util.GetCBList(gamelist, Legal.Games_7usum, Legal.Games_7sm, Legal.Games_6oras, Legal.Games_6xy, Legal.Games_5, Legal.Games_4, Legal.Games_4e, Legal.Games_4r, Legal.Games_3, Legal.Games_3e, Legal.Games_3r, Legal.Games_3s); - VersionDataSource.AddRange(Util.GetCBList(gamelist, Legal.Games_7vc1).OrderBy(g => g.Value)); // stuff to end unsorted - VersionDataSource.AddRange(Util.GetCBList(gamelist, Legal.Games_7vc2).OrderBy(g => g.Value)); // stuff to end unsorted - VersionDataSource.AddRange(Util.GetCBList(gamelist, Legal.Games_7go).OrderBy(g => g.Value)); // stuff to end unsorted + VersionDataSource = GetVersionList(); HaXMoveDataSource = Util.GetCBList(movelist, null); MoveDataSource = LegalMoveDataSource = HaXMoveDataSource.Where(m => !Legal.Z_Moves.Contains(m.Value)).ToList(); @@ -310,6 +307,19 @@ private void InitializeDataSources() Memories = new MemoryStrings(this); } + private IReadOnlyList GetVersionList() + { + var ver = Util.GetCBList(gamelist, + Legal.Games_7usum, Legal.Games_7sm, + Legal.Games_6oras, Legal.Games_6xy, + Legal.Games_5, Legal.Games_4, Legal.Games_4e, Legal.Games_4r, + Legal.Games_3, Legal.Games_3e, Legal.Games_3r, Legal.Games_3s); + ver.AddRange(Util.GetCBList(gamelist, Legal.Games_7vc1).OrderBy(g => g.Value)); // stuff to end unsorted + ver.AddRange(Util.GetCBList(gamelist, Legal.Games_7vc2).OrderBy(g => g.Value)); // stuff to end unsorted + ver.AddRange(Util.GetCBList(gamelist, Legal.Games_7go).OrderBy(g => g.Value)); // stuff to end unsorted + return ver; + } + private void InitializeMetSources() { // Gen 2 @@ -374,10 +384,10 @@ private void InitializeMetSources() public void SetItemDataSource(GameVersion game, int generation, int MaxItemID, IEnumerable allowed = null, bool HaX = false) { - string[] items = GetItemStrings(generation, game); + var items = GetItemStrings(generation, game); ItemDataSource = Util.GetCBList(items, (allowed == null || HaX ? Enumerable.Range(0, MaxItemID) : allowed.Select(i => (int)i)).ToArray()); } - public List GetLocationList(GameVersion Version, int SaveFormat, bool egg) + public IReadOnlyList GetLocationList(GameVersion Version, int SaveFormat, bool egg) { if (SaveFormat == 2) return MetGen2; diff --git a/PKHeX.Core/Game/IBasicStrings.cs b/PKHeX.Core/Game/IBasicStrings.cs index 37106f9e0..b56b3f92b 100644 --- a/PKHeX.Core/Game/IBasicStrings.cs +++ b/PKHeX.Core/Game/IBasicStrings.cs @@ -1,13 +1,15 @@ -namespace PKHeX.Core +using System.Collections.Generic; + +namespace PKHeX.Core { public interface IBasicStrings { - string[] Species { get; } - string[] Item { get; } - string[] Move { get; } - string[] Ability { get; } - string[] Types { get; } - string[] Natures { get; } + IReadOnlyList Species { get; } + IReadOnlyList Item { get; } + IReadOnlyList Move { get; } + IReadOnlyList Ability { get; } + IReadOnlyList Types { get; } + IReadOnlyList Natures { get; } string EggName { get; } } } diff --git a/PKHeX.Core/PKM/Shared/QRPKM.cs b/PKHeX.Core/PKM/Shared/QRPKM.cs index 0650a8a42..183f7590b 100644 --- a/PKHeX.Core/PKM/Shared/QRPKM.cs +++ b/PKHeX.Core/PKM/Shared/QRPKM.cs @@ -42,7 +42,7 @@ private static IEnumerable GetHeader(PKM pkm, GameStrings s) if (pkm.HeldItem > 0) { var str = s.GetItemStrings(pkm.Format); - if (pkm.HeldItem < str.Length) + if (pkm.HeldItem < str.Count) yield return $" @ {str[pkm.HeldItem]}"; } diff --git a/PKHeX.Core/PKM/Util/PKMSorting.cs b/PKHeX.Core/PKM/Util/PKMSorting.cs index d475086b1..1d5a6b755 100644 --- a/PKHeX.Core/PKM/Util/PKMSorting.cs +++ b/PKHeX.Core/PKM/Util/PKMSorting.cs @@ -88,9 +88,9 @@ public static IEnumerable OrderByUsage(this IEnumerable list) /// Source list to sort /// Names of each species /// Enumerable list that is sorted - public static IEnumerable OrderBySpeciesName(this IEnumerable list, string[] speciesNames) + public static IEnumerable OrderBySpeciesName(this IEnumerable list, IReadOnlyList speciesNames) { - int max = speciesNames.Length - 1; + int max = speciesNames.Count - 1; string SpeciesName(int s) => s > max ? string.Empty : speciesNames[s]; return list.InitialSortBy() diff --git a/PKHeX.Core/Util/DataUtil.cs b/PKHeX.Core/Util/DataUtil.cs index 89ff89720..be0d1d255 100644 --- a/PKHeX.Core/Util/DataUtil.cs +++ b/PKHeX.Core/Util/DataUtil.cs @@ -248,20 +248,20 @@ public static List GetUnsortedCBList(string textfile) .Select(data => new ComboItem { Text = data[1], Value = Convert.ToInt32(data[0]) }) .ToList(); } - public static List GetCBList(string[] inStrings, params int[][] allowed) + public static List GetCBList(IReadOnlyList inStrings, params int[][] allowed) { if (allowed?[0] == null) - allowed = new[] { Enumerable.Range(0, inStrings.Length).ToArray() }; + allowed = new[] { Enumerable.Range(0, inStrings.Count).ToArray() }; return allowed.SelectMany(list => list .Select(z => new ComboItem { Text = inStrings[z], Value = z }) .OrderBy(z => z.Text)) .ToList(); } - public static List GetOffsetCBList(List cbList, string[] inStrings, int offset, int[] allowed) + public static List GetOffsetCBList(List cbList, IReadOnlyList inStrings, int offset, IEnumerable allowed) { if (allowed == null) - allowed = Enumerable.Range(0, inStrings.Length).ToArray(); + allowed = Enumerable.Range(0, inStrings.Count); var list = allowed .Select(z => new ComboItem {Text = inStrings[z - offset], Value = z}) diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs index df9b034fc..25ad4771b 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs @@ -1689,7 +1689,7 @@ private static List GetSuggestionMessage(PKM pkm, int level, int locatio if (pkm.Format >= 3) { var met_list = GameInfo.GetLocationList((GameVersion)pkm.Version, pkm.Format, egg: false); - var locstr = met_list.Find(loc => loc.Value == location).Text; + var locstr = met_list.First(loc => loc.Value == location).Text; suggestion.Add($"{MsgPKMSuggestionMetLocation} {locstr}"); suggestion.Add($"{MsgPKMSuggestionMetLevel} {level}"); } diff --git a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs index 7c8208b80..60ee2a0a8 100644 --- a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs +++ b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs @@ -586,7 +586,7 @@ private void B_OpenTrainerInfo_Click(object sender, EventArgs e) new SAV_SimpleTrainer(SAV).ShowDialog(); else if (SAV.Generation == 6) new SAV_Trainer(SAV).ShowDialog(); - else if (SAV.Generation == 7) + else if (SAV is SAV7) new SAV_Trainer7(SAV).ShowDialog(); // Refresh conversion info PKMConverter.UpdateConfig(SAV.SubRegion, SAV.Country, SAV.ConsoleRegion, SAV.OT, SAV.Gender, SAV.Language); @@ -728,7 +728,7 @@ private void B_OUTHallofFame_Click(object sender, EventArgs e) { if (SAV.Generation == 6) new SAV_HallOfFame(SAV).ShowDialog(); - else if (SAV.Generation == 7) + else if (SAV is SAV7) new SAV_HallOfFame7(SAV).ShowDialog(); } private void B_CGearSkin_Click(object sender, EventArgs e) @@ -795,8 +795,7 @@ public bool ExportBackup() { if (!SAV.Exportable) return false; - SaveFileDialog sfd = new SaveFileDialog - { FileName = Util.CleanFileName(SAV.BAKName) }; + var sfd = new SaveFileDialog {FileName = Util.CleanFileName(SAV.BAKName)}; if (sfd.ShowDialog() != DialogResult.OK) return false; @@ -1028,8 +1027,6 @@ private void ToggleViewSubEditors(SaveFile sav) GB_Daycare.Visible = sav.HasDaycare; B_OpenSecretBase.Enabled = sav.HasSecretBase; B_OpenPokepuffs.Enabled = sav.HasPuff; - B_OpenPokeBeans.Enabled = sav.Generation == 7; - B_CellsStickers.Enabled = sav.Generation == 7; B_OUTPasserby.Enabled = sav.HasPSS; B_OpenBoxLayout.Enabled = sav.HasNamableBoxes; B_OpenWondercards.Enabled = sav.HasWondercards; @@ -1044,6 +1041,7 @@ private void ToggleViewSubEditors(SaveFile sav) B_OpenEventFlags.Enabled = sav.HasEvents; B_OpenLinkInfo.Enabled = sav.HasLink; B_CGearSkin.Enabled = sav.Generation == 5; + B_OpenPokeBeans.Enabled = B_CellsStickers.Enabled = B_FestivalPlaza.Enabled = sav is SAV7; B_OpenTrainerInfo.Enabled = B_OpenItemPouch.Enabled = sav.HasParty && !(SAV is SAV4BR); // Box RS & Battle Revolution B_OpenMiscEditor.Enabled = sav is SAV3 || sav is SAV4 || sav is SAV5; @@ -1053,12 +1051,11 @@ private void ToggleViewSubEditors(SaveFile sav) B_OpenApricorn.Enabled = sav.HGSS; B_OpenRTCEditor.Enabled = sav.RS || sav.E || sav.Generation == 2; B_OpenUGSEditor.Enabled = sav.DP || sav.Pt; - B_FestivalPlaza.Enabled = sav.Generation == 7; B_MailBox.Enabled = sav is SAV2 || sav is SAV3 || sav is SAV4 || sav is SAV5; SL_Extra.Initialize(sav.GetExtraSlots(HaX), InitializeDragDrop); } - GB_SAVtools.Visible = sav.Exportable && FLP_SAVtools.Controls.Cast().Any(c => c.Enabled); + GB_SAVtools.Visible = sav.Exportable && FLP_SAVtools.Controls.OfType().Any(c => c.Enabled); foreach (Control c in FLP_SAVtools.Controls.Cast()) c.Visible = c.Enabled; } @@ -1163,7 +1160,7 @@ private void B_OpenUGSEditor_Click(object sender, EventArgs e) } private void B_FestivalPlaza_Click(object sender, EventArgs e) { - if (SAV.Generation == 7) + if (SAV is SAV7) new SAV_FestivalPlaza(SAV).ShowDialog(); } private void B_MailBox_Click(object sender, EventArgs e) diff --git a/PKHeX.WinForms/Subforms/KChart.cs b/PKHeX.WinForms/Subforms/KChart.cs index 59125326a..aedc925a0 100644 --- a/PKHeX.WinForms/Subforms/KChart.cs +++ b/PKHeX.WinForms/Subforms/KChart.cs @@ -21,7 +21,7 @@ public KChart(SaveFile sav) InitializeComponent(); WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage); SAV = sav; - alolanOnly = SAV.Generation == 7 && DialogResult.Yes == WinFormsUtil.Prompt(MessageBoxButtons.YesNo, "Alolan Dex only?"); + alolanOnly = SAV is SAV7 && DialogResult.Yes == WinFormsUtil.Prompt(MessageBoxButtons.YesNo, "Alolan Dex only?"); Array.Resize(ref species, SAV.Personal.TableLength); diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Misc3.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Misc3.cs index 89e2daeb8..9f0fb2372 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Misc3.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Misc3.cs @@ -141,7 +141,7 @@ private void SaveJoyful() private void B_GetTickets_Click(object sender, EventArgs e) { var Pouches = SAV.Inventory; - string[] itemlist = GameInfo.Strings.GetItemStrings(SAV.Generation, SAV.Version); + var itemlist = GameInfo.Strings.GetItemStrings(SAV.Generation, SAV.Version).ToArray(); for (int i = 0; i < itemlist.Length; i++) if (string.IsNullOrEmpty(itemlist[i])) itemlist[i] = $"(Item #{i:000})"; diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Misc4.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Misc4.cs index d01da85f6..47e537816 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Misc4.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Misc4.cs @@ -103,7 +103,7 @@ private void ReadMain() NUD_Coin.Value = SAV.Coin; NUD_Coin.Maximum = SAV.MaxCoins; int[] FlyDestD; - List metLocationList; + IReadOnlyList metLocationList; switch (SAV.Version) { case GameVersion.D: diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_Trainer7.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_Trainer7.cs index 669e9f9ea..75d41d218 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_Trainer7.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_Trainer7.cs @@ -259,7 +259,7 @@ private void LoadThrowTypeLists() private void LoadMapFlyToData() { - List metLocationList = GameInfo.GetLocationList(GameVersion.US, 7, false); + IReadOnlyList metLocationList = GameInfo.GetLocationList(GameVersion.US, 7, false); int[] FlyDestNameIndex = { -1,24,34,8,20,38,12,46,40,30,//Melemele 70,68,78,86,74,104,82,58,90,72,76,92,62,//Akala diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_Inventory.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_Inventory.cs index a165d6fb6..63ec77c9c 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/SAV_Inventory.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_Inventory.cs @@ -16,7 +16,7 @@ public SAV_Inventory(SaveFile sav) InitializeComponent(); WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage); SAV = (Origin = sav).Clone(); - itemlist = GameInfo.Strings.GetItemStrings(SAV.Generation, SAV.Version); + itemlist = GameInfo.Strings.GetItemStrings(SAV.Generation, SAV.Version).ToArray(); for (int i = 0; i < itemlist.Length; i++) if (itemlist[i]?.Length == 0) diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_MailBox.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_MailBox.cs index 43662018f..0e00a5932 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/SAV_MailBox.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_MailBox.cs @@ -148,7 +148,7 @@ public SAV_MailBox(SaveFile sav) }.ToList(), null); } - string[] ItemList = GameInfo.Strings.GetItemStrings(Gen, SAV.Version); + var ItemList = GameInfo.Strings.GetItemStrings(Gen, SAV.Version); CB_MailType.Items.Clear(); CB_MailType.Items.Add(ItemList[0]); foreach (int item in MailItemID)