From 8540b00ca1cb40fa3a54b4ba3a9f134fd340b876 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Sat, 29 Oct 2016 15:41:55 -0700 Subject: [PATCH] Refactoring No functional change besides changing the default save to sav7. Main changes are moving the string data fetching out of the winforms-specific Main.cs --- PKHeX/{Misc => Game}/ComboItem.cs | 0 PKHeX/Game/GameInfo.cs | 389 +++++++++++++++++ PKHeX/Game/GameUtil.cs | 69 +++ PKHeX/Game/GameVersion.cs | 42 ++ PKHeX/MainWindow/Main.Designer.cs | 4 +- PKHeX/MainWindow/Main.cs | 398 +++--------------- PKHeX/MainWindow/MainPK4.cs | 8 +- PKHeX/MainWindow/MainPK5.cs | 2 +- PKHeX/MainWindow/MainPK6.cs | 2 +- PKHeX/MainWindow/MainPK7.cs | 2 +- PKHeX/Misc/personal_gs | Bin 8064 -> 0 bytes PKHeX/PKHeX.csproj | 7 +- PKHeX/PKM/PKX.cs | 45 +- PKHeX/Subforms/PKM Editors/MemoryAmie.cs | 28 +- .../PKM Editors/SuperTrainingEditor.cs | 4 +- PKHeX/Subforms/SAV_Database.cs | 14 +- PKHeX/Subforms/SAV_MysteryGiftDB.cs | 6 +- .../Save Editors/Gen6/SAV_BoxLayout.cs | 2 +- .../Save Editors/Gen6/SAV_HallOfFame.cs | 21 +- PKHeX/Subforms/Save Editors/Gen6/SAV_Link6.cs | 14 +- .../Save Editors/Gen6/SAV_PokeBlockORAS.cs | 2 +- .../Save Editors/Gen6/SAV_PokedexORAS.cs | 6 +- .../Save Editors/Gen6/SAV_PokedexXY.cs | 6 +- .../Save Editors/Gen6/SAV_Pokepuff.cs | 2 +- .../Save Editors/Gen6/SAV_SecretBase.cs | 14 +- .../Save Editors/Gen6/SAV_SuperTrain.cs | 8 +- .../Subforms/Save Editors/Gen6/SAV_Trainer.cs | 4 +- PKHeX/Subforms/Save Editors/SAV_Inventory.cs | 27 +- PKHeX/Subforms/Save Editors/SAV_Wondercard.cs | 8 +- PKHeX/Subforms/frmReport.cs | 32 +- 30 files changed, 677 insertions(+), 489 deletions(-) rename PKHeX/{Misc => Game}/ComboItem.cs (100%) create mode 100644 PKHeX/Game/GameInfo.cs create mode 100644 PKHeX/Game/GameUtil.cs create mode 100644 PKHeX/Game/GameVersion.cs delete mode 100644 PKHeX/Misc/personal_gs diff --git a/PKHeX/Misc/ComboItem.cs b/PKHeX/Game/ComboItem.cs similarity index 100% rename from PKHeX/Misc/ComboItem.cs rename to PKHeX/Game/ComboItem.cs diff --git a/PKHeX/Game/GameInfo.cs b/PKHeX/Game/GameInfo.cs new file mode 100644 index 000000000..479e13584 --- /dev/null +++ b/PKHeX/Game/GameInfo.cs @@ -0,0 +1,389 @@ +using System; +using System.Linq; +using System.Collections.Generic; + +namespace PKHeX +{ + public static class GameInfo + { + private static readonly string[] ptransp = { "ポケシフター", "Poké Transfer", "Poké Fret", "Pokétrasporto", "Poképorter", "Pokétransfer", "포케시프터", "ポケシフター" }; + public static readonly string[] lang_val = { "ja", "en", "fr", "it", "de", "es", "ko", "zh", "pt" }; + private const string DefaultLanguage = "en"; + private static readonly GameStrings[] Languages = new GameStrings[lang_val.Length]; + + // Lazy fetch implementation + public static GameStrings getStrings(string lang) + { + int l = Array.IndexOf(lang_val, lang); + if (l < 0) + l = 1; + return getIndex(l); + } + private static GameStrings getIndex(int index) + { + return Languages[index] ?? (Languages[index] = new GameStrings(lang_val[index])); + } + + private static string getTransporterName(string Language) + { + int lang = Array.IndexOf(lang_val, Language); + if (lang < 0 || lang >= ptransp.Length) + lang = Array.IndexOf(lang_val, DefaultLanguage); + + return ptransp[lang < 0 ? 1 : lang]; + } + + // String providing + public class GameStrings + { + // PKM Info + public readonly string[] specieslist, movelist, itemlist, abilitylist, types, natures, forms, + memories, genloc, trainingbags, trainingstage, characteristics, + encountertypelist, gamelanguages, balllist, gamelist, pokeblocks, + g3coloitems, g3xditems, g3items, g2items, g1items; + + // Met Locations + public readonly string[] metGSC_00000, metRSEFRLG_00000, metCXD_00000; + public readonly string[] metHGSS_00000, metHGSS_02000, metHGSS_03000; + public readonly string[] metBW2_00000, metBW2_30000, metBW2_40000, metBW2_60000; + public readonly string[] metXY_00000, metXY_30000, metXY_40000, metXY_60000; + public readonly string[] metSM_00000, metSM_30000, metSM_40000, metSM_60000; + + // Misc + public readonly string[] wallpapernames, puffs; + public readonly string eggname; + private readonly string Language; + + public GameStrings(string l) + { + Language = l; + // Past Generation strings + g3items = get("ItemsG3"); + // XD and Colosseum + { + g3coloitems = (string[])g3items.Clone(); + string[] tmp = get("ItemsG3Colosseum"); + Array.Resize(ref g3coloitems, 500 + tmp.Length); + for (int i = g3items.Length; i < g3coloitems.Length; i++) + g3coloitems[i] = $"UNUSED {i}"; + Array.Copy(tmp, 0, g3coloitems, g3coloitems.Length - tmp.Length, tmp.Length); + + g3xditems = (string[])g3items.Clone(); + string[] tmp2 = get("ItemsG3XD"); + Array.Resize(ref g3xditems, 500 + tmp2.Length); + for (int i = g3items.Length; i < g3xditems.Length; i++) + g3xditems[i] = $"UNUSED {i}"; + Array.Copy(tmp2, 0, g3xditems, g3xditems.Length - tmp2.Length, tmp2.Length); + } + g2items = get("ItemsG2"); + g1items = get("ItemsG1"); + metRSEFRLG_00000 = get("rsefrlg_00000"); + metGSC_00000 = get("gsc_00000"); + + metCXD_00000 = get("cxd_00000"); + // Sanitize a little + var metSanitize = (string[])metCXD_00000.Clone(); + for (int i = 0; i < metSanitize.Length; i++) + if (metCXD_00000.Count(r => r == metSanitize[i]) > 1) + metSanitize[i] += $" [{i.ToString("000")}]"; + metCXD_00000 = metSanitize; + + // Current Generation strings + natures = Util.getNaturesList(l); + types = get("types"); + abilitylist = get("abilities"); + movelist = get("moves"); + itemlist = get("items"); + characteristics = get("character"); + specieslist = get("species"); + wallpapernames = get("wallpaper"); + encountertypelist = get("encountertype"); + gamelist = get("games"); + gamelanguages = Util.getNulledStringArray(Util.getStringList("languages")); + + balllist = new string[Legal.Items_Ball.Length]; + for (int i = 0; i < balllist.Length; i++) + balllist[i] = itemlist[Legal.Items_Ball[i]]; + + pokeblocks = get("pokeblock"); + forms = get("forms"); + memories = get("memories"); + genloc = get("genloc"); + trainingbags = get("trainingbag"); + trainingstage = get("supertraining"); + puffs = get("puff"); + + eggname = specieslist[0]; + metHGSS_00000 = get("hgss_00000"); + metHGSS_02000 = get("hgss_02000"); + metHGSS_03000 = get("hgss_03000"); + metBW2_00000 = get("bw2_00000"); + metBW2_30000 = get("bw2_30000"); + metBW2_40000 = get("bw2_40000"); + metBW2_60000 = get("bw2_60000"); + metXY_00000 = get("xy_00000"); + metXY_30000 = get("xy_30000"); + metXY_40000 = get("xy_40000"); + metXY_60000 = get("xy_60000"); + metSM_00000 = get("sm_00000"); + metSM_30000 = get("sm_30000"); + metSM_40000 = get("sm_40000"); + metSM_60000 = get("sm_60000"); + + Sanitize(); + } + + private void Sanitize() + { + // Gen4 Mail names not stored in future games. No clever solution like for HM's, so improvise. + for (int i = 137; i <= 148; i++) + itemlist[i] = $"Mail #{i - 137 + 1} (G4)"; + + // Fix Item Names (Duplicate entries) + int len = itemlist[425].Length; + itemlist[426] = itemlist[425].Substring(0, len - 1) + (char)(itemlist[425][len - 1] + 1) + " (G4)"; + itemlist[427] = itemlist[425].Substring(0, len - 1) + (char)(itemlist[425][len - 1] + 2) + " (G4)"; + itemlist[456] += " (HG/SS)"; // S.S. Ticket + itemlist[736] += " (OR/AS)"; // S.S. Ticket + itemlist[463] += " (DPPt)"; // Storage Key + itemlist[734] += " (OR/AS)"; // Storage Key + itemlist[478] += " (HG/SS)"; // Basement Key + itemlist[478] += " (OR/AS)"; // Basement Key + itemlist[621] += " (M)"; // Xtransceiver + itemlist[626] += " (F)"; // Xtransceiver + itemlist[629] += " (2)"; // DNA Splicers + itemlist[637] += " (2)"; // Dropped Item + itemlist[707] += " (2)"; // Travel Trunk + itemlist[713] += " (2)"; // Alt Bike + itemlist[714] += " (2)"; // Holo Caster + itemlist[729] += " (1)"; // Meteorite + itemlist[740] += " (2)"; // Contest Costume + itemlist[751] += " (2)"; // Meteorite + itemlist[771] += " (3)"; // Meteorite + itemlist[772] += " (4)"; // Meteorite + + // Replace the Egg Name with ---; egg name already stored to eggname + specieslist[0] = "---"; + + // Get the met locations... for all of the games... + + // Fix up some of the Location strings to make them more descriptive: + metHGSS_02000[1] += " (NPC)"; // Anything from an NPC + metHGSS_02000[2] += " (" + eggname + ")"; // Egg From Link Trade + metBW2_00000[36] = metBW2_00000[84] + "/" + metBW2_00000[36]; // Cold Storage in BW = PWT in BW2 + + // BW2 Entries from 76 to 105 are for Entralink in BW + for (int i = 76; i < 106; i++) + metBW2_00000[i] = metBW2_00000[i] + "●"; + + // Localize the Poketransfer to the language (30001) + metBW2_30000[1 - 1] = getTransporterName(Language); // Default to English + metBW2_30000[2 - 1] += " (NPC)"; // Anything from an NPC + metBW2_30000[3 - 1] += $" ({eggname})"; // Link Trade (Egg) + + // Zorua/Zoroark events + metBW2_30000[10 - 1] = specieslist[251] + " (" + specieslist[570] + " 1)"; // Celebi's Zorua Event + metBW2_30000[11 - 1] = specieslist[251] + " (" + specieslist[570] + " 2)"; // Celebi's Zorua Event + metBW2_30000[12 - 1] = specieslist[571] + " (" + "1)"; // Zoroark + metBW2_30000[13 - 1] = specieslist[571] + " (" + "2)"; // Zoroark + + metBW2_60000[3 - 1] += " (" + eggname + ")"; // Egg Treasure Hunter/Breeder, whatever... + + metXY_00000[104] += " (X/Y)"; // Victory Road + metXY_00000[106] += " (X/Y)"; // Pokémon League + metXY_00000[202] += " (OR/AS)"; // Pokémon League + metXY_00000[298] += " (OR/AS)"; // Victory Road + metXY_30000[0] += " (NPC)"; // Anything from an NPC + metXY_30000[1] += " (" + eggname + ")"; // Egg From Link Trade + + // Set the first entry of a met location to "" (nothing) + // Fix (None) tags + abilitylist[0] = itemlist[0] = movelist[0] = metXY_00000[0] = metBW2_00000[0] = metHGSS_00000[0] = "(" + itemlist[0] + ")"; + } + private string[] get(string ident) + { + string[] data = Util.getStringList(ident, Language); + if (data == null || data.Length == 0) + data = Util.getStringList(ident, DefaultLanguage); + return data; + } + + public string[] getItemStrings(int generation, GameVersion game) + { + switch (generation) + { + case 0: + return new string[0]; + case 1: + return g1items; + case 2: + return g2items; + case 3: + switch (game) + { + case GameVersion.COLO: + return g3coloitems; + case GameVersion.XD: + return g3xditems; + default: + return g3items; + } + default: + return itemlist; + } + } + } + + // DataSource providing + public static List MoveDataSource, ItemDataSource, SpeciesDataSource, BallDataSource, NatureDataSource, AbilityDataSource, VersionDataSource; + private static List metGen2, metGen3, metGen3CXD, metGen4, metGen5, metGen6; + public static void InitializeDataSources(GameStrings s) + { + int[] ball_nums = { 7, 576, 13, 492, 497, 14, 495, 493, 496, 494, 11, 498, 8, 6, 12, 15, 9, 5, 499, 10, 1, 16 }; + int[] ball_vals = { 7, 25, 13, 17, 22, 14, 20, 18, 21, 19, 11, 23, 8, 6, 12, 15, 9, 5, 24, 10, 1, 16 }; + BallDataSource = Util.getVariedCBList(s.itemlist, ball_nums, ball_vals); + SpeciesDataSource = Util.getCBList(s.specieslist, null); + NatureDataSource = Util.getCBList(s.natures, null); + AbilityDataSource = Util.getCBList(s.abilitylist, null); + VersionDataSource = Util.getCBList(s.gamelist, 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); + + MoveDataSource = Util.getCBList(s.movelist, null); + #region Met Locations + // Gen 2 + { + var met_list = Util.getCBList(s.metGSC_00000, Enumerable.Range(0, 0x5F).ToArray()); + met_list = Util.getOffsetCBList(met_list, s.metGSC_00000, 00000, new[] { 0x7E, 0x7F }); + metGen2 = met_list; + } + // Gen 3 + { + var met_list = Util.getCBList(s.metRSEFRLG_00000, Enumerable.Range(0, 213).ToArray()); + met_list = Util.getOffsetCBList(met_list, s.metRSEFRLG_00000, 00000, new[] { 253, 254, 255 }); + metGen3 = met_list; + + var cxd_list = Util.getCBList(s.metCXD_00000, Enumerable.Range(0, s.metCXD_00000.Length).ToArray()).Where(c => c.Text.Length > 0).ToList(); + metGen3CXD = cxd_list; + } + // Gen 4 + { + var met_list = Util.getCBList(s.metHGSS_00000, new[] { 0 }); + met_list = Util.getOffsetCBList(met_list, s.metHGSS_02000, 2000, new[] { 2000 }); + met_list = Util.getOffsetCBList(met_list, s.metHGSS_02000, 2000, new[] { 2002 }); + met_list = Util.getOffsetCBList(met_list, s.metHGSS_03000, 3000, new[] { 3001 }); + met_list = Util.getOffsetCBList(met_list, s.metHGSS_00000, 0000, Legal.Met_HGSS_0); + met_list = Util.getOffsetCBList(met_list, s.metHGSS_02000, 2000, Legal.Met_HGSS_2); + met_list = Util.getOffsetCBList(met_list, s.metHGSS_03000, 3000, Legal.Met_HGSS_3); + metGen4 = met_list; + } + // Gen 5 + { + var met_list = Util.getCBList(s.metBW2_00000, new[] { 0 }); + met_list = Util.getOffsetCBList(met_list, s.metBW2_60000, 60001, new[] { 60002 }); + met_list = Util.getOffsetCBList(met_list, s.metBW2_30000, 30001, new[] { 30003 }); + met_list = Util.getOffsetCBList(met_list, s.metBW2_00000, 00000, Legal.Met_BW2_0); + met_list = Util.getOffsetCBList(met_list, s.metBW2_30000, 30001, Legal.Met_BW2_3); + met_list = Util.getOffsetCBList(met_list, s.metBW2_40000, 40001, Legal.Met_BW2_4); + met_list = Util.getOffsetCBList(met_list, s.metBW2_60000, 60001, Legal.Met_BW2_6); + metGen5 = met_list; + } + // Gen 6 + { + var met_list = Util.getCBList(s.metXY_00000, new[] { 0 }); + met_list = Util.getOffsetCBList(met_list, s.metXY_60000, 60001, new[] { 60002 }); + met_list = Util.getOffsetCBList(met_list, s.metXY_30000, 30001, new[] { 30002 }); + met_list = Util.getOffsetCBList(met_list, s.metXY_00000, 00000, Legal.Met_XY_0); + met_list = Util.getOffsetCBList(met_list, s.metXY_30000, 30001, Legal.Met_XY_3); + met_list = Util.getOffsetCBList(met_list, s.metXY_40000, 40001, Legal.Met_XY_4); + met_list = Util.getOffsetCBList(met_list, s.metXY_60000, 60001, Legal.Met_XY_6); + metGen6 = met_list; + } + #endregion + } + + public static void setItemDataSource(bool HaX, int MaxItemID, IEnumerable allowed, int generation, GameVersion game, GameStrings s) + { + string[] items = s.getItemStrings(generation, game); + ItemDataSource = Util.getCBList(items, (HaX ? Enumerable.Range(0, MaxItemID) : allowed.Select(i => (int) i)).ToArray()); + } + public static List getLocationList(GameVersion Version, int SaveFormat, bool egg) + { + if (SaveFormat == 2) + return metGen2; + + if (egg) + { + if (Version < GameVersion.W && SaveFormat >= 5) + return metGen4; + } + + switch (Version) + { + case GameVersion.CXD: + if (SaveFormat == 3) + return metGen3CXD; + break; + + case GameVersion.R: + case GameVersion.S: + if (SaveFormat == 3) + return metGen3.OrderByDescending(loc => loc.Value <= 87).ToList(); // Ferry + break; + case GameVersion.E: + if (SaveFormat == 3) + return metGen3.OrderByDescending(loc => loc.Value <= 87 || (loc.Value >= 196 && loc.Value <= 212)).ToList(); // Trainer Hill + break; + case GameVersion.FR: + case GameVersion.LG: + if (SaveFormat == 3) + return metGen3.OrderByDescending(loc => loc.Value > 87 && loc.Value < 197).ToList(); // Celadon Dept. + break; + + case GameVersion.D: + case GameVersion.P: + if (SaveFormat == 4 || (SaveFormat >= 5 && egg)) + return metGen4.Take(4).Concat(metGen4.Skip(4).OrderByDescending(loc => loc.Value <= 111)).ToList(); // Battle Park + break; + + case GameVersion.Pt: + if (SaveFormat == 4 || (SaveFormat >= 5 && egg)) + return metGen4.Take(4).Concat(metGen4.Skip(4).OrderByDescending(loc => loc.Value <= 125)).ToList(); // Rock Peak Ruins + break; + + case GameVersion.HG: + case GameVersion.SS: + if (SaveFormat == 4 || (SaveFormat >= 5 && egg)) + return metGen4.Take(4).Concat(metGen4.Skip(4).OrderByDescending(loc => loc.Value > 125 && loc.Value < 234)).ToList(); // Celadon Dept. + break; + + case GameVersion.B: + case GameVersion.W: + return metGen5; + + case GameVersion.B2: + case GameVersion.W2: + return metGen5.Take(3).Concat(metGen5.Skip(3).OrderByDescending(loc => loc.Value <= 116)).ToList(); // Abyssal Ruins + + case GameVersion.X: + case GameVersion.Y: + return metGen6.Take(3).Concat(metGen6.Skip(3).OrderByDescending(loc => loc.Value <= 168)).ToList(); // Unknown Dungeon + + case GameVersion.OR: + case GameVersion.AS: + return metGen6.Take(3).Concat(metGen6.Skip(3).OrderByDescending(loc => loc.Value > 168 && loc.Value <= 354)).ToList(); // Secret Base + } + + // Currently on a future game, return corresponding list for generation + if (Version <= GameVersion.CXD && SaveFormat == 4) + return metGen4.Where(loc => loc.Value == 0x37) // Pal Park to front + .Concat(metGen4.Take(4)) + .Concat(metGen4.Skip(4).Where(loc => loc.Value != 0x37)).ToList(); + + if (Version < GameVersion.X && SaveFormat >= 5) // PokéTransfer to front + return metGen5.Where(loc => loc.Value == 30001) + .Concat(metGen5.Take(3)) + .Concat(metGen5.Skip(3).Where(loc => loc.Value != 30001)).ToList(); + + return metGen6; + } + } +} diff --git a/PKHeX/Game/GameUtil.cs b/PKHeX/Game/GameUtil.cs new file mode 100644 index 000000000..b185efa17 --- /dev/null +++ b/PKHeX/Game/GameUtil.cs @@ -0,0 +1,69 @@ +namespace PKHeX +{ + public static class GameUtil + { + /// Determines the Version Grouping of an input Version ID + /// Version of which to determine the group + /// Version Group Identifier or Invalid if type cannot be determined. + public static GameVersion getMetLocationVersionGroup(GameVersion Version) + { + switch (Version) + { + case GameVersion.CXD: + return GameVersion.CXD; + + case GameVersion.RBY: + return GameVersion.RBY; + + case GameVersion.GS: + case GameVersion.C: + return GameVersion.GSC; + + case GameVersion.R: + case GameVersion.S: + return GameVersion.RS; + + case GameVersion.E: + return GameVersion.E; + + case GameVersion.FR: + case GameVersion.LG: + return GameVersion.FR; + + case GameVersion.D: + case GameVersion.P: + return GameVersion.DP; + + case GameVersion.Pt: + return GameVersion.Pt; + + case GameVersion.HG: + case GameVersion.SS: + return GameVersion.HGSS; + + case GameVersion.B: + case GameVersion.W: + return GameVersion.BW; + + case GameVersion.B2: + case GameVersion.W2: + return GameVersion.B2W2; + + case GameVersion.X: + case GameVersion.Y: + return GameVersion.XY; + + case GameVersion.OR: + case GameVersion.AS: + return GameVersion.ORAS; + + case GameVersion.SN: + case GameVersion.MN: + return GameVersion.SM; + + default: + return GameVersion.Invalid; + } + } + } +} diff --git a/PKHeX/Game/GameVersion.cs b/PKHeX/Game/GameVersion.cs new file mode 100644 index 000000000..0d7316c97 --- /dev/null +++ b/PKHeX/Game/GameVersion.cs @@ -0,0 +1,42 @@ +namespace PKHeX +{ + public enum GameVersion + { + // Not actually stored values, but assigned as properties. + XD = -11, + COLO = -10, + BATREV = -7, + RSBOX = -5, + GS = -4, + C = -3, + + // Indicators + Invalid = -2, + Any = -1, + Unknown = 0, + + // Version IDs, also stored in PKM structure + /*Gen3*/ S = 1, R = 2, E = 3, FR = 4, LG = 5, CXD = 15, + /*Gen4*/ D = 10, P = 11, Pt = 12, HG = 7, SS = 8, + /*Gen5*/ W = 20, B = 21, W2 = 22, B2 = 23, + /*Gen6*/ X = 24, Y = 25, AS = 26, OR = 27, + /*Gen7*/ SN = 30, MN = 31, + + // Game Groupings (SaveFile type) + RBY = 98, + GSC = 99, + RS = 100, + FRLG = 101, + DP = 102, + HGSS = 103, + BW = 104, + B2W2 = 105, + XY = 106, + ORASDEMO = 107, + ORAS = 108, + SM = 109, + + // Extra Game Groupings (Generation) + Gen1, Gen2, Gen3, Gen4, Gen5, Gen6, Gen7 + } +} diff --git a/PKHeX/MainWindow/Main.Designer.cs b/PKHeX/MainWindow/Main.Designer.cs index eacfb0f91..f382614ec 100644 --- a/PKHeX/MainWindow/Main.Designer.cs +++ b/PKHeX/MainWindow/Main.Designer.cs @@ -3732,7 +3732,7 @@ public void InitializeComponent() this.Menu_ShowdownImportPKM.ShowShortcutKeys = false; this.Menu_ShowdownImportPKM.Size = new System.Drawing.Size(231, 22); this.Menu_ShowdownImportPKM.Text = "Import Set from Clipboard"; - this.Menu_ShowdownImportPKM.Click += new System.EventHandler(this.clickShowdownImportPK6); + this.Menu_ShowdownImportPKM.Click += new System.EventHandler(this.clickShowdownImportPKM); // // Menu_ShowdownExportPKM // @@ -3743,7 +3743,7 @@ public void InitializeComponent() this.Menu_ShowdownExportPKM.ShowShortcutKeys = false; this.Menu_ShowdownExportPKM.Size = new System.Drawing.Size(231, 22); this.Menu_ShowdownExportPKM.Text = "Export Set to Clipboard"; - this.Menu_ShowdownExportPKM.Click += new System.EventHandler(this.clickShowdownExportPK6); + this.Menu_ShowdownExportPKM.Click += new System.EventHandler(this.clickShowdownExportPKM); // // Menu_ShowdownExportParty // diff --git a/PKHeX/MainWindow/Main.cs b/PKHeX/MainWindow/Main.cs index dcc451ee7..d20856ba6 100644 --- a/PKHeX/MainWindow/Main.cs +++ b/PKHeX/MainWindow/Main.cs @@ -47,8 +47,8 @@ public Main() }).Start(); CB_ExtraBytes.SelectedIndex = 0; - getFieldsfromPKM = populateFieldsPK6; - getPKMfromFields = preparePK6; + getFieldsfromPKM = populateFieldsPK7; + getPKMfromFields = preparePK7; // Set up form properties and arrays. SlotPictureBoxes = new[] { @@ -141,7 +141,7 @@ public Main() // Select Language string l = Properties.Settings.Default.Language; if (l.Length != 2) l = "en"; - int lang = Array.IndexOf(lang_val, l); + int lang = Array.IndexOf(GameInfo.lang_val, l); CB_MainLanguage.SelectedIndex = lang < 0 ? 1 : lang; // Version Check @@ -158,6 +158,7 @@ public Main() InitializeFields(); formInitialized = true; + #endregion #region Load Initial File(s) if (args.Length > 1) // Load the arguments @@ -201,32 +202,20 @@ public Main() #region Important Variables public static PKM pkm = new PK6(); // Tab Pokemon Data Storage - public static SaveFile SAV = new SAV6 { Game = (int)GameVersion.AS, OT = "PKHeX", TID = 12345, SID = 54321, Language = 2, Country = 49, SubRegion = 7, ConsoleRegion = 1 }; // Save File - public static string eggname = ""; + public static SaveFile SAV = new SAV7 { Game = (int)GameVersion.AS, OT = "PKHeX", TID = 12345, SID = 54321, Language = 2, Country = 49, SubRegion = 7, ConsoleRegion = 1 }; // Save File + public static GameInfo.GameStrings GameStrings; + private LegalityAnalysis Legality = new LegalityAnalysis(new PK3()); public static string curlanguage = "en"; public static string[] gendersymbols = { "♂", "♀", "-" }; - public static string[] specieslist, movelist, itemlist, abilitylist, types, natures, forms, - memories, genloc, trainingbags, trainingstage, characteristics, - encountertypelist, gamelanguages, balllist, gamelist, pokeblocks, - g3coloitems, g3xditems, g3items, g2items, g1items = { }; - public static string[] metGSC_00000, metRSEFRLG_00000, metCXD_00000 = { }; - public static string[] metHGSS_00000, metHGSS_02000, metHGSS_03000 = { }; - public static string[] metBW2_00000, metBW2_30000, metBW2_40000, metBW2_60000 = { }; - public static string[] metXY_00000, metXY_30000, metXY_40000, metXY_60000 = { }; - public static string[] wallpapernames, puffs = { }; public static bool unicode; - public static List MoveDataSource, ItemDataSource, SpeciesDataSource, BallDataSource, NatureDataSource, AbilityDataSource, VersionDataSource; - private static List metGen2, metGen3, metGen3CXD, metGen4, metGen5, metGen6; public static volatile bool formInitialized, fieldsInitialized, fieldsLoaded; private static int colorizedbox = -1; private static Image colorizedcolor; private static int colorizedslot; public static bool HaX; - private LegalityAnalysis Legality = new LegalityAnalysis(new PK3()); private static readonly Image mixedHighlight = Util.ChangeOpacity(Properties.Resources.slotSet, 0.5); - private static readonly string[] lang_val = { "ja", "en", "fr", "it", "de", "es", "ko", "zh", "pt" }; private static readonly string[] main_langlist = { "日本語", // JPN @@ -452,7 +441,7 @@ private void manMenuBatchEditor(object sender, EventArgs e) updateBoxViewers(); } // Misc Options - private void clickShowdownImportPK6(object sender, EventArgs e) + private void clickShowdownImportPKM(object sender, EventArgs e) { if (!formInitialized) return; @@ -539,7 +528,7 @@ private void clickShowdownImportPK6(object sender, EventArgs e) pkm = preparePKM(); updateLegality(); } - private void clickShowdownExportPK6(object sender, EventArgs e) + private void clickShowdownExportPKM(object sender, EventArgs e) { if (!formInitialized) return; @@ -1173,7 +1162,7 @@ private void openSAV(SaveFile sav, string path) if (SAV.Generation == 2) updateOriginGame(null, null); - // Refresh PK#->PK6 conversion info + // Refresh PK* conversion info PKMConverter.updateConfig(SAV.SubRegion, SAV.Country, SAV.ConsoleRegion, SAV.OT, SAV.Gender); if (WindowTranslationRequired) // force update -- re-added controls may be untranslated @@ -1239,154 +1228,16 @@ private void changeMainLanguage(object sender, EventArgs e) private void InitializeStrings() { if (CB_MainLanguage.SelectedIndex < 8) - curlanguage = lang_val[CB_MainLanguage.SelectedIndex]; - + curlanguage = GameInfo.lang_val[CB_MainLanguage.SelectedIndex]; + string l = curlanguage; - - // Past Generation strings - g3items = Util.getStringListFallback("ItemsG3", l, "en"); - // XD and Colosseum - { - g3coloitems = (string[])g3items.Clone(); - string[] tmp = Util.getStringListFallback("ItemsG3Colosseum", l, "en"); - Array.Resize(ref g3coloitems, 500 + tmp.Length); - for (int i = g3items.Length; i < g3coloitems.Length; i++) - g3coloitems[i] = $"UNUSED {i}"; - Array.Copy(tmp, 0, g3coloitems, g3coloitems.Length - tmp.Length, tmp.Length); - - g3xditems = (string[])g3items.Clone(); - string[] tmp2 = Util.getStringListFallback("ItemsG3XD", l, "en"); - Array.Resize(ref g3xditems, 500 + tmp2.Length); - for (int i = g3items.Length; i < g3xditems.Length; i++) - g3xditems[i] = $"UNUSED {i}"; - Array.Copy(tmp2, 0, g3xditems, g3xditems.Length - tmp2.Length, tmp2.Length); - } - g2items = Util.getStringListFallback("ItemsG2", l, "en"); - g1items = Util.getStringListFallback("ItemsG1", l, "en"); - metRSEFRLG_00000 = Util.getStringListFallback("rsefrlg_00000", l, "en"); - metGSC_00000 = Util.getStringListFallback("gsc_00000", l, "en"); - - metCXD_00000 = Util.getStringListFallback("cxd_00000", l, "en"); - // Sanitize a little - var metSanitize = (string[])metCXD_00000.Clone(); - for (int i = 0; i < metSanitize.Length; i++) - if (metCXD_00000.Count(r => r == metSanitize[i]) > 1) - metSanitize[i] += $" [{i.ToString("000")}]"; - metCXD_00000 = metSanitize; - - // Current Generation strings - natures = Util.getNaturesList(l); - types = Util.getTypesList(l); - abilitylist = Util.getAbilitiesList(l); - movelist = Util.getMovesList(l); - itemlist = Util.getItemsList(l); - characteristics = Util.getCharacteristicsList(l); - specieslist = Util.getSpeciesList(l); - wallpapernames = Util.getStringList("wallpaper", l); - encountertypelist = Util.getStringList("encountertype", l); - gamelist = Util.getStringList("games", l); - gamelanguages = Util.getNulledStringArray(Util.getStringList("languages")); - - balllist = new string[Legal.Items_Ball.Length]; - for (int i = 0; i < balllist.Length; i++) - balllist[i] = itemlist[Legal.Items_Ball[i]]; - - if (l != "pt" || (l == "pt" && !fieldsInitialized)) // load initial binaries - { - pokeblocks = Util.getStringList("pokeblock", l); - forms = Util.getFormsList(l); - memories = Util.getStringList("memories", l); - genloc = Util.getStringList("genloc", l); - trainingbags = Util.getStringList("trainingbag", l); - trainingstage = Util.getStringList("supertraining", l); - puffs = Util.getStringList("puff", l); - } - - // Gen4 Mail names not stored in future games. No clever solution like for HM's, so improvise. - for (int i = 137; i <= 148; i++) - itemlist[i] = $"Mail #{i-137+1} (G4)"; - - // Fix Item Names (Duplicate entries) - int len = itemlist[425].Length; - itemlist[426] = itemlist[425].Substring(0, len-1) + (char)(itemlist[425][len-1]+1) + " (G4)"; - itemlist[427] = itemlist[425].Substring(0, len-1) + (char)(itemlist[425][len-1]+2) + " (G4)"; - itemlist[456] += " (HG/SS)"; // S.S. Ticket - itemlist[736] += " (OR/AS)"; // S.S. Ticket - itemlist[463] += " (DPPt)"; // Storage Key - itemlist[734] += " (OR/AS)"; // Storage Key - itemlist[478] += " (HG/SS)"; // Basement Key - itemlist[478] += " (OR/AS)"; // Basement Key - itemlist[621] += " (M)"; // Xtransceiver - itemlist[626] += " (F)"; // Xtransceiver - itemlist[629] += " (2)"; // DNA Splicers - itemlist[637] += " (2)"; // Dropped Item - itemlist[707] += " (2)"; // Travel Trunk - itemlist[713] += " (2)"; // Alt Bike - itemlist[714] += " (2)"; // Holo Caster - itemlist[729] += " (1)"; // Meteorite - itemlist[740] += " (2)"; // Contest Costume - itemlist[751] += " (2)"; // Meteorite - itemlist[771] += " (3)"; // Meteorite - itemlist[772] += " (4)"; // Meteorite - - // Get the Egg Name and then replace it with --- for the comboboxes. - eggname = specieslist[0]; - specieslist[0] = "---"; - - // Get the met locations... for all of the games... - metHGSS_00000 = Util.getStringList("hgss_00000", l); - metHGSS_02000 = Util.getStringList("hgss_02000", l); - metHGSS_03000 = Util.getStringList("hgss_03000", l); - - metBW2_00000 = Util.getStringList("bw2_00000", l); - metBW2_30000 = Util.getStringList("bw2_30000", l); - metBW2_40000 = Util.getStringList("bw2_40000", l); - metBW2_60000 = Util.getStringList("bw2_60000", l); - - metXY_00000 = Util.getStringList("xy_00000", l); - metXY_30000 = Util.getStringList("xy_30000", l); - metXY_40000 = Util.getStringList("xy_40000", l); - metXY_60000 = Util.getStringList("xy_60000", l); - - // Fix up some of the Location strings to make them more descriptive: - metHGSS_02000[1] += " (NPC)"; // Anything from an NPC - metHGSS_02000[2] += " (" + eggname + ")"; // Egg From Link Trade - metBW2_00000[36] = metBW2_00000[84] + "/" + metBW2_00000[36]; // Cold Storage in BW = PWT in BW2 - - // BW2 Entries from 76 to 105 are for Entralink in BW - for (int i = 76; i < 106; i++) - metBW2_00000[i] = metBW2_00000[i] + "●"; - - // Localize the Poketransfer to the language (30001) - string[] ptransp = { "ポケシフター", "Poké Transfer", "Poké Fret", "Pokétrasporto", "Poképorter", "Pokétransfer", "포케시프터", "ポケシフター" }; - metBW2_30000[1 - 1] = ptransp[Array.IndexOf(lang_val, curlanguage)]; - metBW2_30000[2 - 1] += " (NPC)"; // Anything from an NPC - metBW2_30000[3 - 1] += " (" + eggname + ")"; // Egg From Link Trade - - // Zorua/Zoroark events - metBW2_30000[10 - 1] = specieslist[251] + " (" + specieslist[570] + " 1)"; // Celebi's Zorua Event - metBW2_30000[11 - 1] = specieslist[251] + " (" + specieslist[570] + " 2)"; // Celebi's Zorua Event - metBW2_30000[12 - 1] = specieslist[571] + " (" + "1)"; // Zoroark - metBW2_30000[13 - 1] = specieslist[571] + " (" + "2)"; // Zoroark - - metBW2_60000[3 - 1] += " (" + eggname + ")"; // Egg Treasure Hunter/Breeder, whatever... - - metXY_00000[104] += " (X/Y)"; // Victory Road - metXY_00000[106] += " (X/Y)"; // Pokémon League - metXY_00000[202] += " (OR/AS)"; // Pokémon League - metXY_00000[298] += " (OR/AS)"; // Victory Road - metXY_30000[0] += " (NPC)"; // Anything from an NPC - metXY_30000[1] += " (" + eggname + ")"; // Egg From Link Trade - - // Set the first entry of a met location to "" (nothing) - // Fix (None) tags - abilitylist[0] = itemlist[0] = movelist[0] = metXY_00000[0] = metBW2_00000[0] = metHGSS_00000[0] = "(" + itemlist[0] + ")"; + GameStrings = GameInfo.getStrings(l); // Force an update to the met locations origintrack = GameVersion.Unknown; // Update Legality Analysis strings - LegalityAnalysis.movelist = movelist; + LegalityAnalysis.movelist = GameStrings.movelist; if (fieldsInitialized) updateIVs(null, null); // Prompt an update for the characteristics @@ -1409,7 +1260,7 @@ private void InitializeFields() TB_TID.Text = 12345.ToString(); TB_SID.Text = 54321.ToString(); CB_GameOrigin.SelectedIndex = 0; - int curlang = Array.IndexOf(lang_val, curlanguage); + int curlang = Array.IndexOf(GameInfo.lang_val, curlanguage); CB_Language.SelectedIndex = curlang > CB_Language.Items.Count - 1 ? 1 : curlang; CB_BoxSelect.SelectedIndex = 0; CB_Ball.SelectedIndex = 0; @@ -1430,101 +1281,28 @@ private void InitializeLanguage() setCountrySubRegion(CB_Country, "countries"); CB_3DSReg.DataSource = Util.getUnsortedCBList("regions3ds"); CB_Language.DataSource = Util.getUnsortedCBList("languages"); - int[] ball_nums = { 7, 576, 13, 492, 497, 14, 495, 493, 496, 494, 11, 498, 8, 6, 12, 15, 9, 5, 499, 10, 1, 16 }; - int[] ball_vals = { 7, 25, 13, 17, 22, 14, 20, 18, 21, 19, 11, 23, 8, 6, 12, 15, 9, 5, 24, 10, 1, 16 }; - BallDataSource = Util.getVariedCBList(itemlist, ball_nums, ball_vals); - SpeciesDataSource = Util.getCBList(specieslist, null); - NatureDataSource = Util.getCBList(natures, null); - AbilityDataSource = Util.getCBList(abilitylist, null); - VersionDataSource = Util.getCBList(gamelist, 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); - MoveDataSource = Util.getCBList(movelist, null); + GameInfo.InitializeDataSources(GameStrings); - #region Met Locations - // Gen 2 - { - var met_list = Util.getCBList(metGSC_00000, Enumerable.Range(0, 0x5F).ToArray()); - met_list = Util.getOffsetCBList(met_list, metGSC_00000, 00000, new[] { 0x7E, 0x7F }); - metGen2 = met_list; - } - // Gen 3 - { - var met_list = Util.getCBList(metRSEFRLG_00000, Enumerable.Range(0, 213).ToArray()); - met_list = Util.getOffsetCBList(met_list, metRSEFRLG_00000, 00000, new[] { 253, 254, 255 }); - metGen3 = met_list; - - var cxd_list = Util.getCBList(metCXD_00000, Enumerable.Range(0, metCXD_00000.Length).ToArray()).Where(c => c.Text.Length > 0).ToList(); - metGen3CXD = cxd_list; - } - // Gen 4 - { - var met_list = Util.getCBList(metHGSS_00000, new[] { 0 }); - met_list = Util.getOffsetCBList(met_list, metHGSS_02000, 2000, new[] { 2000 }); - met_list = Util.getOffsetCBList(met_list, metHGSS_02000, 2000, new[] { 2002 }); - met_list = Util.getOffsetCBList(met_list, metHGSS_03000, 3000, new[] { 3001 }); - met_list = Util.getOffsetCBList(met_list, metHGSS_00000, 0000, Legal.Met_HGSS_0); - met_list = Util.getOffsetCBList(met_list, metHGSS_02000, 2000, Legal.Met_HGSS_2); - met_list = Util.getOffsetCBList(met_list, metHGSS_03000, 3000, Legal.Met_HGSS_3); - metGen4 = met_list; - } - // Gen 5 - { - var met_list = Util.getCBList(metBW2_00000, new[] { 0 }); - met_list = Util.getOffsetCBList(met_list, metBW2_60000, 60001, new[] { 60002 }); - met_list = Util.getOffsetCBList(met_list, metBW2_30000, 30001, new[] { 30003 }); - met_list = Util.getOffsetCBList(met_list, metBW2_00000, 00000, Legal.Met_BW2_0); - met_list = Util.getOffsetCBList(met_list, metBW2_30000, 30001, Legal.Met_BW2_3); - met_list = Util.getOffsetCBList(met_list, metBW2_40000, 40001, Legal.Met_BW2_4); - met_list = Util.getOffsetCBList(met_list, metBW2_60000, 60001, Legal.Met_BW2_6); - metGen5 = met_list; - } - // Gen 6 - { - var met_list = Util.getCBList(metXY_00000, new[] { 0 }); - met_list = Util.getOffsetCBList(met_list, metXY_60000, 60001, new[] { 60002 }); - met_list = Util.getOffsetCBList(met_list, metXY_30000, 30001, new[] { 30002 }); - met_list = Util.getOffsetCBList(met_list, metXY_00000, 00000, Legal.Met_XY_0); - met_list = Util.getOffsetCBList(met_list, metXY_30000, 30001, Legal.Met_XY_3); - met_list = Util.getOffsetCBList(met_list, metXY_40000, 40001, Legal.Met_XY_4); - met_list = Util.getOffsetCBList(met_list, metXY_60000, 60001, Legal.Met_XY_6); - metGen6 = met_list; - } - #endregion - - CB_EncounterType.DataSource = Util.getCBList(encountertypelist, new[] { 0 }, Legal.Gen4EncounterTypes); - CB_HPType.DataSource = Util.getCBList(types.Skip(1).Take(16).ToArray(), null); - CB_Nature.DataSource = new BindingSource(NatureDataSource, null); + CB_EncounterType.DataSource = Util.getCBList(GameStrings.encountertypelist, new[] { 0 }, Legal.Gen4EncounterTypes); + CB_HPType.DataSource = Util.getCBList(GameStrings.types.Skip(1).Take(16).ToArray(), null); + CB_Nature.DataSource = new BindingSource(GameInfo.NatureDataSource, null); populateFilteredDataSources(); } private void populateFilteredDataSources() { + GameInfo.setItemDataSource(HaX, SAV.MaxItemID, SAV.HeldItems, SAV.Generation, SAV.Version, GameStrings); if (SAV.Generation > 1) - { - string[] items = itemlist; - if (SAV.Generation == 3) - { - switch (SAV.Version) - { - case GameVersion.COLO: items = g3coloitems; break; - case GameVersion.XD: items = g3xditems; break; - default: items = g3items; break; - } - } - if (SAV.Generation == 2) - items = g2items; + CB_HeldItem.DataSource = new BindingSource(GameInfo.ItemDataSource.Where(i => i.Value <= SAV.MaxItemID).ToList(), null); - ItemDataSource = Util.getCBList(items, (HaX ? Enumerable.Range(0, SAV.MaxItemID) : SAV.HeldItems.Select(i => (int)i)).ToArray()); - CB_HeldItem.DataSource = new BindingSource(ItemDataSource.Where(i => i.Value <= SAV.MaxItemID).ToList(), null); - } - - CB_Ball.DataSource = new BindingSource(BallDataSource.Where(b => b.Value <= SAV.MaxBallID).ToList(), null); - CB_Species.DataSource = new BindingSource(SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); - DEV_Ability.DataSource = new BindingSource(AbilityDataSource.Where(a => a.Value <= SAV.MaxAbilityID).ToList(), null); - CB_GameOrigin.DataSource = new BindingSource(VersionDataSource.Where(g => g.Value <= SAV.MaxGameID || SAV.Generation >= 3 && g.Value == 15).ToList(), null); + CB_Ball.DataSource = new BindingSource(GameInfo.BallDataSource.Where(b => b.Value <= SAV.MaxBallID).ToList(), null); + CB_Species.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); + DEV_Ability.DataSource = new BindingSource(GameInfo.AbilityDataSource.Where(a => a.Value <= SAV.MaxAbilityID).ToList(), null); + CB_GameOrigin.DataSource = new BindingSource(GameInfo.VersionDataSource.Where(g => g.Value <= SAV.MaxGameID || SAV.Generation >= 3 && g.Value == 15).ToList(), null); // Set the Move ComboBoxes too.. - var moves = MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList(); + var moves = GameInfo.MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList(); foreach (ComboBox cb in new[] { CB_Move1, CB_Move2, CB_Move3, CB_Move4, CB_RelearnMove1, CB_RelearnMove2, CB_RelearnMove3, CB_RelearnMove4 }) { cb.DisplayMember = "Text"; cb.ValueMember = "Value"; @@ -1623,7 +1401,7 @@ private void setForms() if (!hasForms) return; - CB_Form.DataSource = PKX.getFormList(species, types, forms, gendersymbols, SAV.Generation).ToList(); + CB_Form.DataSource = PKX.getFormList(species, GameStrings.types, GameStrings.forms, gendersymbols, SAV.Generation).ToList(); } private void setAbilityList() { @@ -1639,9 +1417,9 @@ private void setAbilityList() if (abils[1] == 0 && SAV.Generation != 3) abils[1] = abils[0]; string[] abilIdentifier = {" (1)", " (2)", " (H)"}; - List ability_list = abils.Where(a => a != 0).Select((t, i) => abilitylist[t] + abilIdentifier[i]).ToList(); + List ability_list = abils.Where(a => a != 0).Select((t, i) => GameStrings.abilitylist[t] + abilIdentifier[i]).ToList(); if (!ability_list.Any()) - ability_list.Add(abilitylist[0] + abilIdentifier[0]); + ability_list.Add(GameStrings.abilitylist[0] + abilIdentifier[0]); int abil = CB_Ability.SelectedIndex; CB_Ability.DataSource = ability_list; @@ -1881,7 +1659,7 @@ private void clickMoves(object sender, EventArgs e) { updateLegality(); int[] m = Legality.getSuggestedRelearn(); - string r = string.Join(Environment.NewLine, m.Select(v => v >= movelist.Length ? "ERROR" : movelist[v])); + string r = string.Join(Environment.NewLine, m.Select(v => v >= GameStrings.movelist.Length ? "ERROR" : GameStrings.movelist[v])); if (DialogResult.Yes != Util.Prompt(MessageBoxButtons.YesNo, "Apply suggested relearn moves?", r)) return; @@ -2001,7 +1779,7 @@ private void updateIVs(object sender, EventArgs e) int characteristic = pkm.Characteristic; L_Characteristic.Visible = Label_CharacteristicPrefix.Visible = characteristic > -1; if (characteristic > -1) - L_Characteristic.Text = characteristics[pkm.Characteristic]; + L_Characteristic.Text = GameStrings.characteristics[pkm.Characteristic]; updateStats(); } private void updateEVs(object sender, EventArgs e) @@ -2322,101 +2100,21 @@ private void updateSpecies(object sender, EventArgs e) updateLegality(); } - private static List getLocationList(GameVersion Version, int SaveFormat, bool egg) - { - if (SaveFormat == 2) - return metGen2; - - if (egg) - { - if (Version < GameVersion.W && SaveFormat >= 5) - return metGen4; - } - - switch (Version) - { - case GameVersion.CXD: - if (SaveFormat == 3) - return metGen3CXD; - break; - - case GameVersion.R: - case GameVersion.S: - if (SaveFormat == 3) - return metGen3.OrderByDescending(loc => loc.Value <= 87).ToList(); // Ferry - break; - case GameVersion.E: - if (SaveFormat == 3) - return metGen3.OrderByDescending(loc => loc.Value <= 87 || (loc.Value >= 196 && loc.Value <= 212)).ToList(); // Trainer Hill - break; - case GameVersion.FR: - case GameVersion.LG: - if (SaveFormat == 3) - return metGen3.OrderByDescending(loc => loc.Value > 87 && loc.Value < 197).ToList(); // Celadon Dept. - break; - - case GameVersion.D: - case GameVersion.P: - if (SaveFormat == 4 || (SaveFormat >= 5 && egg)) - return metGen4.Take(4).Concat(metGen4.Skip(4).OrderByDescending(loc => loc.Value <= 111)).ToList(); // Battle Park - break; - - case GameVersion.Pt: - if (SaveFormat == 4 || (SaveFormat >= 5 && egg)) - return metGen4.Take(4).Concat(metGen4.Skip(4).OrderByDescending(loc => loc.Value <= 125)).ToList(); // Rock Peak Ruins - break; - - case GameVersion.HG: - case GameVersion.SS: - if (SaveFormat == 4 || (SaveFormat >= 5 && egg)) - return metGen4.Take(4).Concat(metGen4.Skip(4).OrderByDescending(loc => loc.Value > 125 && loc.Value < 234)).ToList(); // Celadon Dept. - break; - - case GameVersion.B: - case GameVersion.W: - return metGen5; - - case GameVersion.B2: - case GameVersion.W2: - return metGen5.Take(3).Concat(metGen5.Skip(3).OrderByDescending(loc => loc.Value <= 116)).ToList(); // Abyssal Ruins - - case GameVersion.X: - case GameVersion.Y: - return metGen6.Take(3).Concat(metGen6.Skip(3).OrderByDescending(loc => loc.Value <= 168)).ToList(); // Unknown Dungeon - - case GameVersion.OR: - case GameVersion.AS: - return metGen6.Take(3).Concat(metGen6.Skip(3).OrderByDescending(loc => loc.Value > 168 && loc.Value <= 354)).ToList(); // Secret Base - } - - // Currently on a future game, return corresponding list for generation - if (Version <= GameVersion.CXD && SaveFormat == 4) - return metGen4.Where(loc => loc.Value == 0x37) // Pal Park to front - .Concat(metGen4.Take(4)) - .Concat(metGen4.Skip(4).Where(loc => loc.Value != 0x37)).ToList(); - - if (Version < GameVersion.X && SaveFormat >= 5) // PokéTransfer to front - return metGen5.Where(loc => loc.Value == 30001) - .Concat(metGen5.Take(3)) - .Concat(metGen5.Skip(3).Where(loc => loc.Value != 30001)).ToList(); - - return metGen6; - } private void updateOriginGame(object sender, EventArgs e) { GameVersion Version = (GameVersion)Util.getIndex(CB_GameOrigin); // check if differs - GameVersion newTrack = SaveUtil.getMetLocationVersionGroup(Version); + GameVersion newTrack = GameUtil.getMetLocationVersionGroup(Version); if (newTrack != origintrack) { - var met_list = getLocationList(Version, SAV.Generation, egg:false); + var met_list = GameInfo.getLocationList(Version, SAV.Generation, egg:false); CB_MetLocation.DisplayMember = "Text"; CB_MetLocation.ValueMember = "Value"; CB_MetLocation.DataSource = new BindingSource(met_list, null); CB_MetLocation.SelectedIndex = 0; // transporter or pal park for past gen pkm - var egg_list = getLocationList(Version, SAV.Generation, egg:true); + var egg_list = GameInfo.getLocationList(Version, SAV.Generation, egg:true); CB_EggLocation.DisplayMember = "Text"; CB_EggLocation.ValueMember = "Value"; CB_EggLocation.DataSource = new BindingSource(egg_list, null); @@ -2488,9 +2186,9 @@ private void updateNatureModification(object sender, EventArgs e) private void updateNickname(object sender, EventArgs e) { if (fieldsInitialized && ModifierKeys == Keys.Control && sender != null) // Import Showdown - { clickShowdownImportPK6(sender, e); return; } + { clickShowdownImportPKM(sender, e); return; } if (fieldsInitialized && ModifierKeys == Keys.Alt && sender != null) // Export Showdown - { clickShowdownExportPK6(sender, e); return; } + { clickShowdownExportPKM(sender, e); return; } if (!fieldsInitialized || CHK_Nicknamed.Checked) return; @@ -2922,28 +2620,28 @@ public static string[] verifyPKMtoSAV(PKM pk) { ushort held = (ushort)pk.HeldItem; - if (held > itemlist.Length) + if (held > GameStrings.itemlist.Length) errata.Add($"Item Index beyond range: {held}"); else if (held > SAV.MaxItemID) - errata.Add($"Game can't obtain item: {itemlist[held]}"); + errata.Add($"Game can't obtain item: {GameStrings.itemlist[held]}"); else if (!pk.CanHoldItem(SAV.HeldItems)) - errata.Add($"Game can't hold item: {itemlist[held]}"); + errata.Add($"Game can't hold item: {GameStrings.itemlist[held]}"); } - if (pk.Species > specieslist.Length) + if (pk.Species > GameStrings.specieslist.Length) errata.Add($"Species Index beyond range: {pk.HeldItem}"); else if (SAV.MaxSpeciesID < pk.Species) - errata.Add($"Game can't obtain species: {specieslist[pk.Species]}"); + errata.Add($"Game can't obtain species: {GameStrings.specieslist[pk.Species]}"); - if (pk.Moves.Any(m => m > movelist.Length)) - errata.Add($"Item Index beyond range: {string.Join(", ", pk.Moves.Where(m => m > movelist.Length).Select(m => m.ToString()))}"); + if (pk.Moves.Any(m => m > GameStrings.movelist.Length)) + errata.Add($"Item Index beyond range: {string.Join(", ", pk.Moves.Where(m => m > GameStrings.movelist.Length).Select(m => m.ToString()))}"); else if (pk.Moves.Any(m => m > SAV.MaxMoveID)) - errata.Add($"Game can't have move: {string.Join(", ", pk.Moves.Where(m => m > SAV.MaxMoveID).Select(m => movelist[m]))}"); + errata.Add($"Game can't have move: {string.Join(", ", pk.Moves.Where(m => m > SAV.MaxMoveID).Select(m => GameStrings.movelist[m]))}"); - if (pk.Ability > abilitylist.Length) + if (pk.Ability > GameStrings.abilitylist.Length) errata.Add($"Ability Index beyond range: {pk.Ability}"); else if (pk.Ability > SAV.MaxAbilityID) - errata.Add($"Game can't have ability: {abilitylist[pk.Ability]}"); + errata.Add($"Game can't have ability: {GameStrings.abilitylist[pk.Ability]}"); return errata.ToArray(); } @@ -3948,7 +3646,7 @@ private void B_OUTPasserby_Click(object sender, EventArgs e) // ulong outfit = BitConverter.ToUInt64(savefile, r_offset + 0x5C); int favpkm = BitConverter.ToUInt16(SAV.Data, r_offset + 0x9C) & 0x7FF; string gamename; - try { gamename = gamelist[game]; } + try { gamename = GameStrings.gamelist[game]; } catch { gamename = "UNKNOWN GAME"; } string[] cr = PKX.getCountryRegionText(country, region, curlanguage); @@ -3958,7 +3656,7 @@ private void B_OUTPasserby_Click(object sender, EventArgs e) "Game: " + gamename + Environment.NewLine + "Country: " + cr[0] + Environment.NewLine + "Region: " + cr[1] + Environment.NewLine + - "Favorite: " + specieslist[favpkm]; + "Favorite: " + GameStrings.specieslist[favpkm]; r_offset += 0xC8; // Advance to next entry } diff --git a/PKHeX/MainWindow/MainPK4.cs b/PKHeX/MainWindow/MainPK4.cs index be56a037b..e48237f20 100644 --- a/PKHeX/MainWindow/MainPK4.cs +++ b/PKHeX/MainWindow/MainPK4.cs @@ -5,6 +5,7 @@ namespace PKHeX { public partial class Main { + // Main Series private void populateFieldsPK4() { PK4 pk4 = pkm as PK4; @@ -154,7 +155,7 @@ private PKM preparePK4() pk4.SID = Util.ToInt32(TB_SID.Text); pk4.EXP = Util.ToUInt32(TB_EXP.Text); pk4.PID = Util.getHEXval(TB_PID.Text); - pk4.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); + pk4.Ability = (byte)Array.IndexOf(GameStrings.abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); pk4.FatefulEncounter = CHK_Fateful.Checked; pk4.Gender = PKX.getGender(Label_Gender.Text); @@ -250,6 +251,7 @@ private PKM preparePK4() return pk4; } + // Battle Revolution private void populateFieldsBK4() { BK4 pk4 = pkm as BK4; @@ -400,7 +402,7 @@ private PKM prepareBK4() pk4.SID = Util.ToInt32(TB_SID.Text); pk4.EXP = Util.ToUInt32(TB_EXP.Text); pk4.PID = Util.getHEXval(TB_PID.Text); - pk4.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); + pk4.Ability = (byte)Array.IndexOf(GameStrings.abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); pk4.FatefulEncounter = CHK_Fateful.Checked; pk4.Gender = PKX.getGender(Label_Gender.Text); @@ -496,6 +498,4 @@ private PKM prepareBK4() return pk4; } } - - } diff --git a/PKHeX/MainWindow/MainPK5.cs b/PKHeX/MainWindow/MainPK5.cs index a3da5fbb2..9b4b41c30 100644 --- a/PKHeX/MainWindow/MainPK5.cs +++ b/PKHeX/MainWindow/MainPK5.cs @@ -260,7 +260,7 @@ private PKM preparePK5() } else { - pk5.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); + pk5.Ability = (byte)Array.IndexOf(GameStrings.abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); pk5.HiddenAbility = CB_Ability.SelectedIndex > 1; // not 0 or 1 } diff --git a/PKHeX/MainWindow/MainPK6.cs b/PKHeX/MainWindow/MainPK6.cs index 6692d6090..ee9721782 100644 --- a/PKHeX/MainWindow/MainPK6.cs +++ b/PKHeX/MainWindow/MainPK6.cs @@ -197,7 +197,7 @@ private PKM preparePK6() pk6.TID = Util.ToInt32(TB_TID.Text); pk6.SID = Util.ToInt32(TB_SID.Text); pk6.EXP = Util.ToUInt32(TB_EXP.Text); - pk6.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); + pk6.Ability = (byte)Array.IndexOf(GameStrings.abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); pk6.AbilityNumber = Util.ToInt32(TB_AbilityNumber.Text); // Number // pkx[0x16], pkx[0x17] are handled by the Medals UI (Hits & Training Bag) pk6.PID = Util.getHEXval(TB_PID.Text); diff --git a/PKHeX/MainWindow/MainPK7.cs b/PKHeX/MainWindow/MainPK7.cs index 0a576c464..1301b466d 100644 --- a/PKHeX/MainWindow/MainPK7.cs +++ b/PKHeX/MainWindow/MainPK7.cs @@ -197,7 +197,7 @@ private PKM preparePK7() pk7.TID = Util.ToInt32(TB_TID.Text); pk7.SID = Util.ToInt32(TB_SID.Text); pk7.EXP = Util.ToUInt32(TB_EXP.Text); - pk7.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); + pk7.Ability = (byte)Array.IndexOf(GameStrings.abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4)); pk7.AbilityNumber = Util.ToInt32(TB_AbilityNumber.Text); // Number // pkx[0x16], pkx[0x17] are handled by the Medals UI (Hits & Training Bag) pk7.PID = Util.getHEXval(TB_PID.Text); diff --git a/PKHeX/Misc/personal_gs b/PKHeX/Misc/personal_gs deleted file mode 100644 index 05130b80bd5e223b6cf75993482d10c16f8a033d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8064 zcmaKxe|!{GlE7=GXPCfwM7a6MV1slL8ss4~m=2)>X}|_-3{9{nrblUX+i=6`u$mQS zSJ2&v5nU8k`5}luc9$i4sDKfInq}A@A-KCSx~`%wdVAg}+?}qvh{@gV=fhleznMu7 z$6bH;htD@v@4b3e^{Q$B{{PQIrcWob9A-#8z&I=D*X_S&B2{c%PkZ!Q@Je&$N}7iJ z5z1RiIioc$*DMS9o0PAkym|$d_f4F6l`ILtAd%hr*^co0eP^Di1b=OPt)|JyA9d?5 z@?i}(G+1}&K`;5eTR(d=@qYindjtYgrpZ?c^`Q`%=hi>^U}v)L!RR4R+3dMmt*jy6 z;?`f}!Pbz-#;%t{*yIas3DCo-MAi`aNF>_`FWhI1$lq^b&FJKb-YZtZ7|9SVLyJVz z?@~_X6Kfig*R6!Opz3^(_4#r)yVutbhMW6ONtG~GwbC*XeLmwSlsonX{a}LfE5xg3 zPU3ln`E)kGg~I-sP*rvEM7spQDs$%7h$6#e?xvjHPi~*X$HO?Iv1y5_Gd}Vw%IW>& zjt(Tx9z8Z4#!sEa3yywN2LD_Cm350|$&UWDlvDkog8m81Zn|FARn-4$%BlWPK|iOE zX`FC)r4 zzr1~_!p)moq5xHkm#Ee#fpAtyG!6N; zxR5P(Do(1;UE~Cab#khxv!C+tz^bIbD$@!%zc^ z`mk$#nx7hK>OmMG#!QZ&e=l>(>wCko{*g64n89g6Mo@e{VV7H8-O4s_3hdVF6}86_IEen>ghZ}XqqTt@fEJg7&b!mE^1{hL-bQ9e)61dii8 zp2Ihm=67a2Jeqi<=#PfGOF&b;@u7v9aT{L7n|2^SaA9T!r8}0npAX`dGL;sR~;W{7k1m#OnxE%c} zn*9d#52t>E(Je=l7h1;L1)8a*SxXB=)x9qNfzf9NlNVNvX@zAm%;2UN8J=y1ExCe! z!~WYx#~)D2>Y-7POeLd4hD$%9+&LfeM#`7Zltrm_4%P=NAXW5VxV9?NjP=E3a090k z)viCXD_!;n`o3q%K$p^ZeGDr}pW-Equj^t6u?VPNh^qwirfzigL&Qq5HN3 zuU2|wF3?nt0}0$^@_R$ z3+s|)IA;j?f zAGK0W?YC=hXS`=v%@O#9*w(7r`Ah0|%kSEIj&h4<1xpmMzFLKEK+*pD(|P~8O%jyN z8rE0Rj#8fYuNH~dc!`9g#;q>>{&iC#b=yYP-U_QsQx`YL;V5~#gimdv{2v9uj;`kZYRo?=NlOz!^ZC^ElvDp6)iFT%Y9Vt?6PL#P^#i;9DcE-t=C>Y2 z8V}zTQcIUOd^6=#-r);T|LumTvJ$?%u>(hF|+?%NZTuhDcf#2T*?{eFSN+{otO-U}8_-ydJg7lZeF-8E(<+$D>xlEsI^WS@I~>#9twPihuG zYs%CN9^Yni&{coJs6nhhMb!UomRBUj_MhdjbIATvt2&>w+IrOiO*0|U2qw#mSXPtJFyuj}7r2Ve*K_893%RL#Eh`J)8{ObER+WzP0 z_wTY^if>n zYbnw0@4D^v3;r=+(=H6jPyAc_d;sHrgS>oJ%G4tfvd4ZO zi~7$tCf`|jY$e<)o3n1VbgXeZ?E0d}I}*)rSD}C1CvUKHQ3(XdYp(VE&icb@D&c#o zWu|!r@8=J;f9CV6Uq3U@{9sjd8hk%ELe$EGSf2!Kd4JwM7|ir*GdC<l%K6J)xK|1f{m+xBzKw>I<)8@m8@Npm!5u7>;(%ANf&k$tSqZ-d=hqopmkkeAN4 z_N~~^Yx5^BJ>Sx&hMW7&jP=2uOV79Ttivnesr-B^SUTU*k0+Y@&pcHLPYZJWRa2&+ z|Ci3UCgOZ6Fm@X}BWqgi?77Idxc5K$sKbxIvwF&ESh^f}>3r)b&bI<%kHC+(sS|=6 z!MmMh&o|2R`Axq%-2B;=L}FQ?qUO@`n|rT=y_O&- zOIAAb8_W-d`4_G4kpC2iCnAsev(SG#_V>-W8vEOYv+7}=$YF(?4tR}rJHO=jhaCG` zn|JUM&+UUw@_;3NJ|krXcV57xDz<|D+pQo1$TV@4Sz${n`C} z8SGc9s^-_!gd$i!;`)X6qtC+nWf;C6&uyr!oxfyBD5CBuzKa<__ zrCi#cFJXRqL5Phlx9z*5(mg-PrFY(Qejhsz4j62CIghz{|3vqE1Nm%+ALN2^kjMOK z_qXGU^OxM`k=f_Zu=Q|AlWzKc*l86nKOd=6`epQrbLM@|{5A;Us;jn_)Pm>}M zdwx~49}_xj^Ia?9h@q-ttAY6&=T|m&_J_QY@-BNmV%YKbvYR{o-7uW5994n>AGGHK zwXXGjRabW=dro3~@vW8r*1z+W z@$f3{PcbZvpG)`O-5gezoEY}z(EdZ`UsZ+kpLRU|&qb^*i5&K3Hc?LVOOYQ_MI|lj zVJ~s_FU+bc>|bs9tf+`OkN$!E)sTLlem30v$;smr;W+Dj;qa$3-TI6D@h{N4Y)TJ@ zGuWRG*}vEy|5BETsgi(K&Cf^a`Davx>ozJ}}d%uOzY0t+B^E-M! z`sa~*UT;VJZ^&v2FTm%Ooc^ycKbo-*=Lair{`{t@zs8F4a9^wkwhYy$`?L7_$&P3R z{9e)o%%7-#uAN`<^1j4iIR43&W8>j1Bcl@R&q3`hD4(UovY+kgXh zGvF!Ix6b*oz75CPhvE6&6-}{~Q{ypdBP<^BZyo1@pPif|!h3i=9)I6}%zC%|^&ILy z`AQ|cZ?vhRiuIp#%x!-?hw~Ym|B>hUpu*#Prok=W{XF)6`=S7+1tG)Ye8#WtrkvhS z_w$KZ?>@Z04+LDEWn;dN^73^5dRJ$>w|(q*_|UR6L6TxV^;wrZ&JWK~{?DR_*QP3ih{U@UJqjDB9+bH}*4|=ldJKJ-_U+`?r6Swap5z48Mpw^PL3Fe?BG> zD{DeLn8Ej_ct7_1^gAD?asK;>Y6xapiw8+be~R-{n@@l|TkyOGJDeSN-*?l+6~WAp#eHA70_Y=#`R>)X8lgH!+aV*UT0 zi_JN@Zuckd`G{Yyj>J#d@8hRpkW+(LKath+e9r!SGzu_De1^kQXMUG?Jx@3ZF%pA)uR)@AG;n`r--m#^%m{o@y8Zlx*Xe8paWs6WiD z8Xd>}u^zr8YUOf8#Qx`QcmJ517`FRIfWMep%5wU{*A^|Ze}BsR=NGx;*`3%woXd?E zA*%Q`7Ul!=d@WxL%y#AjUm3dE+G<527xfPVP0802msxPWwNuihiVf3G&$(#Gzn7yApm|6+eJF!-mzM8m6| szpidGjP!2oe?Hi=$HmV#9UolVup0iB??3GR!rgyVm~+pc8aWUC2cTV@8~^|S diff --git a/PKHeX/PKHeX.csproj b/PKHeX/PKHeX.csproj index 945e76994..dcb6a6e64 100644 --- a/PKHeX/PKHeX.csproj +++ b/PKHeX/PKHeX.csproj @@ -82,6 +82,7 @@ + @@ -96,6 +97,8 @@ + + @@ -107,6 +110,7 @@ + Form @@ -393,7 +397,7 @@ SplashScreen.cs - + @@ -514,7 +518,6 @@ Designer - SettingsSingleFileGenerator Settings.Designer.cs diff --git a/PKHeX/PKM/PKX.cs b/PKHeX/PKM/PKX.cs index 6a6535335..3f54e0d63 100644 --- a/PKHeX/PKM/PKX.cs +++ b/PKHeX/PKM/PKX.cs @@ -316,41 +316,46 @@ public static string[] getCountryRegionText(int country, int region, string lang public static string getLocation(PKM pk, bool eggmet) { + if (pk.Format <= 2) + return ""; + int locval = eggmet ? pk.Egg_Location : pk.Met_Location; + if (pk.Format == 3) - return Main.metRSEFRLG_00000[locval%0x100]; - if (pk.Version < 0x10 && (eggmet || pk.Format < 5)) + return Main.GameStrings.metRSEFRLG_00000[locval%0x100]; + if (pk.Gen4 && (eggmet || pk.Format == 4)) { - if (locval < 2000) return Main.metHGSS_00000[locval]; - if (locval < 3000) return Main.metHGSS_02000[locval % 2000]; - return Main.metHGSS_03000[locval % 3000]; + if (locval < 2000) return Main.GameStrings.metHGSS_00000[locval]; + if (locval < 3000) return Main.GameStrings.metHGSS_02000[locval % 2000]; + return Main.GameStrings.metHGSS_03000[locval % 3000]; } - if (pk.Version < 24) + if (pk.Gen5 || pk.Format <= 5) { - if (locval < 30000) return Main.metBW2_00000[locval]; - if (locval < 40000) return Main.metBW2_30000[locval % 10000 - 1]; - if (locval < 60000) return Main.metBW2_40000[locval % 10000 - 1]; - return Main.metBW2_60000[locval % 10000 - 1]; + if (locval < 30000) return Main.GameStrings.metBW2_00000[locval]; + if (locval < 40000) return Main.GameStrings.metBW2_30000[locval % 10000 - 1]; + if (locval < 60000) return Main.GameStrings.metBW2_40000[locval % 10000 - 1]; + return Main.GameStrings.metBW2_60000[locval % 10000 - 1]; } - if (pk.Version > 23) + if (pk.Gen6 || pk.Format <= 6) { - if (locval < 30000) return Main.metXY_00000[locval]; - if (locval < 40000) return Main.metXY_30000[locval % 10000 - 1]; - if (locval < 60000) return Main.metXY_40000[locval % 10000 - 1]; - return Main.metXY_60000[locval % 10000 - 1]; + if (locval < 30000) return Main.GameStrings.metXY_00000[locval]; + if (locval < 40000) return Main.GameStrings.metXY_30000[locval % 10000 - 1]; + if (locval < 60000) return Main.GameStrings.metXY_40000[locval % 10000 - 1]; + return Main.GameStrings.metXY_60000[locval % 10000 - 1]; } return null; // Shouldn't happen. } public static string[] getQRText(PKM pkm) { + var s = Main.GameStrings; string[] response = new string[3]; // Summarize string filename = pkm.Nickname; - if (pkm.Nickname != Main.specieslist[pkm.Species] && Main.specieslist[pkm.Species] != null) - filename += $" ({Main.specieslist[pkm.Species]})"; - response[0] = $"{filename} [{Main.abilitylist[pkm.Ability]}] lv{pkm.Stat_Level} @ {Main.itemlist[pkm.HeldItem]} -- {Main.natures[pkm.Nature]}"; - response[1] = $"{Main.movelist[pkm.Move1]} / {Main.movelist[pkm.Move2]} / {Main.movelist[pkm.Move3]} / {Main.movelist[pkm.Move4]}"; - response[2] = String.Format( + if (pkm.Nickname != s.specieslist[pkm.Species] && s.specieslist[pkm.Species] != null) + filename += $" ({s.specieslist[pkm.Species]})"; + response[0] = $"{filename} [{s.abilitylist[pkm.Ability]}] lv{pkm.Stat_Level} @ {s.itemlist[pkm.HeldItem]} -- {s.natures[pkm.Nature]}"; + response[1] = $"{s.movelist[pkm.Move1]} / {s.movelist[pkm.Move2]} / {s.movelist[pkm.Move3]} / {s.movelist[pkm.Move4]}"; + response[2] = string.Format( "IVs:{0}{1}{2}{3}{4}{5}" + Environment.NewLine + Environment.NewLine + "EVs:{6}{7}{8}{9}{10}{11}", diff --git a/PKHeX/Subforms/PKM Editors/MemoryAmie.cs b/PKHeX/Subforms/PKM Editors/MemoryAmie.cs index 2eba1d56e..4d4d6d854 100644 --- a/PKHeX/Subforms/PKM Editors/MemoryAmie.cs +++ b/PKHeX/Subforms/PKM Editors/MemoryAmie.cs @@ -125,7 +125,7 @@ private void loadFields() RTB_OT.Visible = CB_OTQual.Enabled = CB_OTMemory.Enabled = CB_OTFeel.Enabled = CB_OTVar.Enabled = M_OT_Affection.Enabled = enable; } else - GB_M_OT.Text = GB_M_CT.Text = $"N/A: {Main.eggname}"; + GB_M_OT.Text = GB_M_CT.Text = $"N/A: {Main.GameStrings.eggname}"; init = true; @@ -184,12 +184,12 @@ private void B_Cancel_Click(object sender, EventArgs e) private void getLangStrings() { // Memory Chooser - int memorycount = Main.memories.Length - 38; + int memorycount = Main.GameStrings.memories.Length - 38; string[] memories = new string[memorycount]; int[] allowed = new int[memorycount]; for (int i = 0; i < memorycount; i++) { - memories[i] = Main.memories[38 + i]; + memories[i] = Main.GameStrings.memories[38 + i]; allowed[i] = i + 1; } Array.Resize(ref allowed, allowed.Length - 1); @@ -209,8 +209,8 @@ private void getLangStrings() CB_OTQual.Items.Clear(); for (int i = 0; i < 7; i++) { - CB_CTQual.Items.Add(Main.memories[2 + i]); - CB_OTQual.Items.Add(Main.memories[2 + i]); + CB_CTQual.Items.Add(Main.GameStrings.memories[2 + i]); + CB_OTQual.Items.Add(Main.GameStrings.memories[2 + i]); } // Feeling Chooser @@ -218,8 +218,8 @@ private void getLangStrings() CB_OTFeel.Items.Clear(); for (int i = 0; i < 24; i++) { - CB_CTFeel.Items.Add(Main.memories[10 + i]); - CB_OTFeel.Items.Add(Main.memories[10 + i]); + CB_CTFeel.Items.Add(Main.GameStrings.memories[10 + i]); + CB_OTFeel.Items.Add(Main.GameStrings.memories[10 + i]); } } private void getMemoryArguments(string ARG, ComboBox sender) @@ -235,11 +235,11 @@ private void getMemoryArguments(string ARG, ComboBox sender) vs = ""; break; case "PKM": - argvals = Util.getCBList(Main.specieslist, null); + argvals = Util.getCBList(Main.GameStrings.specieslist, null); vs = vartypes[0]; break; case "GENLOC": - argvals = Util.getCBList(Main.genloc, null); + argvals = Util.getCBList(Main.GameStrings.genloc, null); vs = vartypes[1]; break; case "ITEM": @@ -265,18 +265,18 @@ private void getMemoryArguments(string ARG, ComboBox sender) /* ORAS */ 718,719,720,737,738,739,740,741,742,752,753,754,755,756,757,758,759,760,761,762,763,764,765,767,768, 769,770,775 }; - var item_list = Util.getCBList(Main.itemlist, items_allowed); + var item_list = Util.getCBList(Main.GameStrings.itemlist, items_allowed); #endregion argvals = item_list; vs = vartypes[2]; } break; case "MOVE": - argvals = Util.getCBList(Main.movelist, null); + argvals = Util.getCBList(Main.GameStrings.movelist, null); vs = vartypes[3]; break; case "LOCATION": - argvals = Util.getCBList(Main.metXY_00000, Legal.Met_XY_0); + argvals = Util.getCBList(Main.GameStrings.metXY_00000, Legal.Met_XY_0); vs = vartypes[4]; break; } @@ -307,10 +307,10 @@ private string getMemoryString(ComboBox m, ComboBox arg, ComboBox q, ComboBox f, bool enabled = false; if (mem == 0) - result = Main.memories[38]; + result = Main.GameStrings.memories[38]; else { - result = string.Format(Main.memories[mem + 38], nn, tr, a, f.Text, q.Text); + result = string.Format(Main.GameStrings.memories[mem + 38], nn, tr, a, f.Text, q.Text); enabled = true; } diff --git a/PKHeX/Subforms/PKM Editors/SuperTrainingEditor.cs b/PKHeX/Subforms/PKM Editors/SuperTrainingEditor.cs index 87fbbde09..4224482a5 100644 --- a/PKHeX/Subforms/PKM Editors/SuperTrainingEditor.cs +++ b/PKHeX/Subforms/PKM Editors/SuperTrainingEditor.cs @@ -26,8 +26,8 @@ public SuperTrainingEditor() CB_Bag.Items.Clear(); CB_Bag.Items.Add("---"); - for (int i = 1; i < Main.trainingbags.Length - 1; i++) - CB_Bag.Items.Add(Main.trainingbags[i]); + for (int i = 1; i < Main.GameStrings.trainingbags.Length - 1; i++) + CB_Bag.Items.Add(Main.GameStrings.trainingbags[i]); if (pkm is PK6) { diff --git a/PKHeX/Subforms/SAV_Database.cs b/PKHeX/Subforms/SAV_Database.cs index cf3551e8f..301f764ed 100644 --- a/PKHeX/Subforms/SAV_Database.cs +++ b/PKHeX/Subforms/SAV_Database.cs @@ -242,27 +242,27 @@ private void populateComboBoxes() var Any = new ComboItem {Text = "Any", Value = -1}; - var DS_Species = new List(Main.SpeciesDataSource); + var DS_Species = new List(GameInfo.SpeciesDataSource); DS_Species.RemoveAt(0); DS_Species.Insert(0, Any); CB_Species.DataSource = DS_Species; - var DS_Item = new List(Main.ItemDataSource); + var DS_Item = new List(GameInfo.ItemDataSource); DS_Item.Insert(0, Any); CB_HeldItem.DataSource = DS_Item; - var DS_Nature = new List(Main.NatureDataSource); + var DS_Nature = new List(GameInfo.NatureDataSource); DS_Nature.Insert(0, Any); CB_Nature.DataSource = DS_Nature; - var DS_Ability = new List(Main.AbilityDataSource); + var DS_Ability = new List(GameInfo.AbilityDataSource); DS_Ability.Insert(0, Any); CB_Ability.DataSource = DS_Ability; - var DS_Version = new List(Main.VersionDataSource); + var DS_Version = new List(GameInfo.VersionDataSource); DS_Version.Insert(0, Any); CB_GameOrigin.DataSource = DS_Version; - string[] hptypes = new string[Main.types.Length - 2]; Array.Copy(Main.types, 1, hptypes, 0, hptypes.Length); + string[] hptypes = new string[Main.GameStrings.types.Length - 2]; Array.Copy(Main.GameStrings.types, 1, hptypes, 0, hptypes.Length); var DS_Type = Util.getCBList(hptypes, null); DS_Type.Insert(0, Any); CB_HPType.DataSource = DS_Type; // Set the Move ComboBoxes too.. - var DS_Move = new List(Main.MoveDataSource); + var DS_Move = new List(GameInfo.MoveDataSource); DS_Move.RemoveAt(0); DS_Move.Insert(0, Any); { foreach (ComboBox cb in new[] { CB_Move1, CB_Move2, CB_Move3, CB_Move4 }) diff --git a/PKHeX/Subforms/SAV_MysteryGiftDB.cs b/PKHeX/Subforms/SAV_MysteryGiftDB.cs index 7cd3279d2..9342b6061 100644 --- a/PKHeX/Subforms/SAV_MysteryGiftDB.cs +++ b/PKHeX/Subforms/SAV_MysteryGiftDB.cs @@ -143,17 +143,17 @@ private void populateComboBoxes() var Any = new ComboItem {Text = "Any", Value = -1}; - var DS_Species = new List(Main.SpeciesDataSource); + var DS_Species = new List(GameInfo.SpeciesDataSource); DS_Species.RemoveAt(0); var filteredSpecies = DS_Species.Where(spec => RawDB.Any(mg => mg.Species == spec.Value)).ToList(); filteredSpecies.Insert(0, Any); CB_Species.DataSource = filteredSpecies; - var DS_Item = new List(Main.ItemDataSource); + var DS_Item = new List(GameInfo.ItemDataSource); DS_Item.Insert(0, Any); CB_HeldItem.DataSource = DS_Item; // Set the Move ComboBoxes too.. - var DS_Move = new List(Main.MoveDataSource); + var DS_Move = new List(GameInfo.MoveDataSource); DS_Move.RemoveAt(0); DS_Move.Insert(0, Any); { foreach (ComboBox cb in new[] { CB_Move1, CB_Move2, CB_Move3, CB_Move4 }) diff --git a/PKHeX/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs b/PKHeX/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs index a799bfdc6..ffb0d7371 100644 --- a/PKHeX/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs +++ b/PKHeX/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs @@ -14,7 +14,7 @@ public SAV_BoxLayout(int box) // Repopulate Wallpaper names CB_BG.Items.Clear(); - foreach (string wallpaper in Main.wallpapernames) + foreach (string wallpaper in Main.GameStrings.wallpapernames) CB_BG.Items.Add(wallpaper); // Go diff --git a/PKHeX/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs b/PKHeX/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs index e6b932377..e7d2e99ef 100644 --- a/PKHeX/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs +++ b/PKHeX/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs @@ -67,12 +67,12 @@ private void Setup() CB_Species.DisplayMember = "Text"; CB_Species.ValueMember = "Value"; - CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Skip(1).Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); + CB_Species.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Skip(1).Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); CB_Move1.DisplayMember = CB_Move2.DisplayMember = CB_Move3.DisplayMember = CB_Move4.DisplayMember = "Text"; CB_Move1.ValueMember = CB_Move2.ValueMember = CB_Move3.ValueMember = CB_Move4.ValueMember = "Value"; - var MoveList = Main.MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList(); + var MoveList = GameInfo.MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList(); CB_Move1.DataSource = new BindingSource(MoveList, null); CB_Move2.DataSource = new BindingSource(MoveList, null); CB_Move3.DataSource = new BindingSource(MoveList, null); @@ -80,7 +80,7 @@ private void Setup() CB_HeldItem.DisplayMember = "Text"; CB_HeldItem.ValueMember = "Value"; - CB_HeldItem.DataSource = new BindingSource(Main.ItemDataSource, null); + CB_HeldItem.DataSource = new BindingSource(GameInfo.ItemDataSource, null); } private void B_Cancel_Click(object sender, EventArgs e) @@ -154,15 +154,16 @@ private void displayEntry(object sender, EventArgs e) string genderstr=gendersymbols[gender]; string shinystr = shiny == 1 ? "Yes" : "No"; + string[] movelist = Main.GameStrings.movelist; s += "Name: " + nickname; - s += " (" + Main.specieslist[species] + " - " + genderstr + ")" + Environment.NewLine; + s += " (" + Main.GameStrings.specieslist[species] + " - " + genderstr + ")" + Environment.NewLine; s += "Level: " + level + Environment.NewLine; s += "Shiny: " + shinystr + Environment.NewLine; - s += "Held Item: " + Main.itemlist[helditem] + Environment.NewLine; - s += "Move 1: " + Main.movelist[move1] + Environment.NewLine; - s += "Move 2: " + Main.movelist[move2] + Environment.NewLine; - s += "Move 3: " + Main.movelist[move3] + Environment.NewLine; - s += "Move 4: " + Main.movelist[move4] + Environment.NewLine; + s += "Held Item: " + Main.GameStrings.itemlist[helditem] + Environment.NewLine; + s += "Move 1: " + movelist[move1] + Environment.NewLine; + s += "Move 2: " + movelist[move2] + Environment.NewLine; + s += "Move 3: " + movelist[move3] + Environment.NewLine; + s += "Move 4: " + movelist[move4] + Environment.NewLine; s += "OT: " + OTname + " (" + TID + "/" + SID + ")" + Environment.NewLine; s += Environment.NewLine; @@ -326,7 +327,7 @@ private void setForms() CB_Form.DisplayMember = "Text"; CB_Form.ValueMember = "Value"; - CB_Form.DataSource = PKX.getFormList(species, Main.types, Main.forms, Main.gendersymbols).ToList(); + CB_Form.DataSource = PKX.getFormList(species, Main.GameStrings.types, Main.GameStrings.forms, Main.gendersymbols).ToList(); } private void updateSpecies(object sender, EventArgs e) { diff --git a/PKHeX/Subforms/Save Editors/Gen6/SAV_Link6.cs b/PKHeX/Subforms/Save Editors/Gen6/SAV_Link6.cs index 97e7d9aac..4a4072f3b 100644 --- a/PKHeX/Subforms/Save Editors/Gen6/SAV_Link6.cs +++ b/PKHeX/Subforms/Save Editors/Gen6/SAV_Link6.cs @@ -14,7 +14,7 @@ public SAV_Link6() { cb.DisplayMember = "Text"; cb.ValueMember = "Value"; - cb.DataSource = new BindingSource(Main.ItemDataSource.Where(item => item.Value <= SAV.MaxItemID).ToArray(), null); + cb.DataSource = new BindingSource(GameInfo.ItemDataSource.Where(item => item.Value <= SAV.MaxItemID).ToArray(), null); } Util.TranslateInterface(this, Main.curlanguage); byte[] data = SAV.LinkBlock; @@ -99,12 +99,12 @@ private void loadLinkData(byte[] data) NUD_Item6.Value = LinkInfo.Quantity_6; // Pokemon slots - TB_PKM1.Text = Main.specieslist[LinkInfo.Pokes[0].Species]; - TB_PKM2.Text = Main.specieslist[LinkInfo.Pokes[1].Species]; - TB_PKM3.Text = Main.specieslist[LinkInfo.Pokes[2].Species]; - TB_PKM4.Text = Main.specieslist[LinkInfo.Pokes[3].Species]; - TB_PKM5.Text = Main.specieslist[LinkInfo.Pokes[4].Species]; - TB_PKM6.Text = Main.specieslist[LinkInfo.Pokes[5].Species]; + TB_PKM1.Text = Main.GameStrings.specieslist[LinkInfo.Pokes[0].Species]; + TB_PKM2.Text = Main.GameStrings.specieslist[LinkInfo.Pokes[1].Species]; + TB_PKM3.Text = Main.GameStrings.specieslist[LinkInfo.Pokes[2].Species]; + TB_PKM4.Text = Main.GameStrings.specieslist[LinkInfo.Pokes[3].Species]; + TB_PKM5.Text = Main.GameStrings.specieslist[LinkInfo.Pokes[4].Species]; + TB_PKM6.Text = Main.GameStrings.specieslist[LinkInfo.Pokes[5].Species]; } } } diff --git a/PKHeX/Subforms/Save Editors/Gen6/SAV_PokeBlockORAS.cs b/PKHeX/Subforms/Save Editors/Gen6/SAV_PokeBlockORAS.cs index c0f03fe75..a5d8bc06d 100644 --- a/PKHeX/Subforms/Save Editors/Gen6/SAV_PokeBlockORAS.cs +++ b/PKHeX/Subforms/Save Editors/Gen6/SAV_PokeBlockORAS.cs @@ -14,7 +14,7 @@ public SAV_PokeBlockORAS() for (int i = 0; i < lbl_spec.Length; i++) { - lbl_spec[i].Text = $"{Main.pokeblocks[94 + i]}:"; + lbl_spec[i].Text = $"{Main.GameStrings.pokeblocks[94 + i]}:"; nup_spec[i].Value = BitConverter.ToUInt32(SAV.Data, SAV.Contest + i * 4); } } diff --git a/PKHeX/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs b/PKHeX/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs index e6647552f..b41f55860 100644 --- a/PKHeX/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs +++ b/PKHeX/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs @@ -23,10 +23,10 @@ public SAV_PokedexORAS() // Fill List CB_Species.DisplayMember = "Text"; CB_Species.ValueMember = "Value"; - CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Skip(1).ToList(), null); + CB_Species.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Skip(1).ToList(), null); for (int i = 1; i < SAV.MaxSpeciesID + 1; i++) - LB_Species.Items.Add(i.ToString("000") + " - " + Main.specieslist[i]); + LB_Species.Items.Add(i.ToString("000") + " - " + Main.GameStrings.specieslist[i]); getData(); editing = false; @@ -131,7 +131,7 @@ private void getEntry() int f = SaveUtil.getDexFormIndexORAS(species, fc); if (f < 0) return; - string[] forms = PKX.getFormList(species, Main.types, Main.forms, Main.gendersymbols); + string[] forms = PKX.getFormList(species, Main.GameStrings.types, Main.GameStrings.forms, Main.gendersymbols); if (forms.Length < 1) return; diff --git a/PKHeX/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs b/PKHeX/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs index 517d3a132..3d673155e 100644 --- a/PKHeX/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs +++ b/PKHeX/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs @@ -23,10 +23,10 @@ public SAV_PokedexXY() // Fill List CB_Species.DisplayMember = "Text"; CB_Species.ValueMember = "Value"; - CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Skip(1).ToList(), null); + CB_Species.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Skip(1).ToList(), null); for (int i = 1; i < SAV.MaxSpeciesID + 1; i++) - LB_Species.Items.Add(i.ToString("000") + " - " + Main.specieslist[i]); + LB_Species.Items.Add(i.ToString("000") + " - " + Main.GameStrings.specieslist[i]); getData(); editing = false; @@ -132,7 +132,7 @@ private void getEntry() int f = SaveUtil.getDexFormIndexXY(species, fc); if (f < 0) return; - string[] forms = PKX.getFormList(species, Main.types, Main.forms, Main.gendersymbols); + string[] forms = PKX.getFormList(species, Main.GameStrings.types, Main.GameStrings.forms, Main.gendersymbols); if (forms.Length < 1) return; diff --git a/PKHeX/Subforms/Save Editors/Gen6/SAV_Pokepuff.cs b/PKHeX/Subforms/Save Editors/Gen6/SAV_Pokepuff.cs index 96bc92146..2ac9e4669 100644 --- a/PKHeX/Subforms/Save Editors/Gen6/SAV_Pokepuff.cs +++ b/PKHeX/Subforms/Save Editors/Gen6/SAV_Pokepuff.cs @@ -10,7 +10,7 @@ public SAV_Pokepuff() InitializeComponent(); Util.TranslateInterface(this, Main.curlanguage); - pfa = Main.puffs; + pfa = Main.GameStrings.puffs; pfa[0] = "---"; Setup(); diff --git a/PKHeX/Subforms/Save Editors/Gen6/SAV_SecretBase.cs b/PKHeX/Subforms/Save Editors/Gen6/SAV_SecretBase.cs index cc1da33bc..8483a4220 100644 --- a/PKHeX/Subforms/Save Editors/Gen6/SAV_SecretBase.cs +++ b/PKHeX/Subforms/Save Editors/Gen6/SAV_SecretBase.cs @@ -12,7 +12,7 @@ public SAV_SecretBase() { InitializeComponent(); Util.TranslateInterface(this, Main.curlanguage); - abilitylist = Main.abilitylist; + abilitylist = Main.GameStrings.abilitylist; setupComboBoxes(); popFavorite(); @@ -35,16 +35,16 @@ private void setupComboBoxes() CB_Ball.DisplayMember = CB_HeldItem.DisplayMember = CB_Species.DisplayMember = CB_Nature.DisplayMember = "Text"; CB_Ball.ValueMember = CB_HeldItem.ValueMember = CB_Species.ValueMember = CB_Nature.ValueMember = "Value"; - CB_Ball.DataSource = new BindingSource(Main.BallDataSource.Where(b => b.Value <= SAV.MaxBallID).ToList(), null); - CB_HeldItem.DataSource = new BindingSource(Main.ItemDataSource.Where(i => i.Value < SAV.MaxItemID).ToList(), null); - CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); - CB_Nature.DataSource = new BindingSource(Main.NatureDataSource, null); + CB_Ball.DataSource = new BindingSource(GameInfo.BallDataSource.Where(b => b.Value <= SAV.MaxBallID).ToList(), null); + CB_HeldItem.DataSource = new BindingSource(GameInfo.ItemDataSource.Where(i => i.Value < SAV.MaxItemID).ToList(), null); + CB_Species.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); + CB_Nature.DataSource = new BindingSource(GameInfo.NatureDataSource, null); CB_Move1.DisplayMember = CB_Move2.DisplayMember = CB_Move3.DisplayMember = CB_Move4.DisplayMember = "Text"; CB_Move1.ValueMember = CB_Move2.ValueMember = CB_Move3.ValueMember = CB_Move4.ValueMember = "Value"; - var MoveList = Main.MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList(); + var MoveList = GameInfo.MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList(); CB_Move1.DataSource = new BindingSource(MoveList, null); CB_Move2.DataSource = new BindingSource(MoveList, null); CB_Move3.DataSource = new BindingSource(MoveList, null); @@ -434,7 +434,7 @@ private void setForms() CB_Form.DisplayMember = "Text"; CB_Form.ValueMember = "Value"; - CB_Form.DataSource = PKX.getFormList(species, Main.types, Main.forms, Main.gendersymbols).ToList(); + CB_Form.DataSource = PKX.getFormList(species, Main.GameStrings.types, Main.GameStrings.forms, Main.gendersymbols).ToList(); } private void updateSpecies(object sender, EventArgs e) diff --git a/PKHeX/Subforms/Save Editors/Gen6/SAV_SuperTrain.cs b/PKHeX/Subforms/Save Editors/Gen6/SAV_SuperTrain.cs index 7623628f9..8e23b491e 100644 --- a/PKHeX/Subforms/Save Editors/Gen6/SAV_SuperTrain.cs +++ b/PKHeX/Subforms/Save Editors/Gen6/SAV_SuperTrain.cs @@ -8,14 +8,14 @@ public partial class SAV_SuperTrain : Form { public SAV_SuperTrain() { - trba = Main.trainingbags; + trba = Main.GameStrings.trainingbags; trba[0] = "---"; offsetTime = SAV.SuperTrain + 0x08; offsetSpec = SAV.SuperTrain + 0x188; offsetVal = SAV.SuperTrain + 0x18A; InitializeComponent(); Util.TranslateInterface(this, Main.curlanguage); - string[] stages = Main.trainingstage; + string[] stages = Main.GameStrings.trainingstage; listBox1.Items.Clear(); for (int i = 0; i < 30; i++) listBox1.Items.Add((i + 1).ToString("00") + " - " + stages[i + 2]); @@ -35,11 +35,11 @@ private void setup() { CB_Species.DisplayMember = "Text"; CB_Species.ValueMember = "Value"; - CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); + CB_Species.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); CB_S2.DisplayMember = "Text"; CB_S2.ValueMember = "Value"; - CB_S2.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); + CB_S2.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null); } listBox1.SelectedIndex = 0; fillTrainingBags(); diff --git a/PKHeX/Subforms/Save Editors/Gen6/SAV_Trainer.cs b/PKHeX/Subforms/Save Editors/Gen6/SAV_Trainer.cs index 8dc6171e5..c66a31ece 100644 --- a/PKHeX/Subforms/Save Editors/Gen6/SAV_Trainer.cs +++ b/PKHeX/Subforms/Save Editors/Gen6/SAV_Trainer.cs @@ -329,10 +329,10 @@ private void getComboBoxes() CB_MultiplayerSprite.ValueMember = "Value"; CB_MultiplayerSprite.DataSource = oras_sprite_list; - L_Vivillon.Text = Main.specieslist[666] + ":"; + L_Vivillon.Text = Main.GameStrings.specieslist[666] + ":"; CB_Vivillon.DisplayMember = "Text"; CB_Vivillon.ValueMember = "Value"; - CB_Vivillon.DataSource = PKX.getFormList(666, Main.types, Main.forms, Main.gendersymbols).ToList(); + CB_Vivillon.DataSource = PKX.getFormList(666, Main.GameStrings.types, Main.GameStrings.forms, Main.gendersymbols).ToList(); } private void getBadges() { diff --git a/PKHeX/Subforms/Save Editors/SAV_Inventory.cs b/PKHeX/Subforms/Save Editors/SAV_Inventory.cs index b56321dd3..0305e394e 100644 --- a/PKHeX/Subforms/Save Editors/SAV_Inventory.cs +++ b/PKHeX/Subforms/Save Editors/SAV_Inventory.cs @@ -11,29 +11,10 @@ public SAV_Inventory() { InitializeComponent(); Util.TranslateInterface(this, Main.curlanguage); - switch (SAV.Generation) - { - case 1: - itemlist = Main.g1items; - B_GiveAll.Visible = false; // Can't give all, not enough room - break; - case 2: - itemlist = Main.g2items; - B_GiveAll.Visible = false; - break; - case 3: - switch (SAV.Version) - { - case GameVersion.XD: itemlist = Main.g3xditems; break; - case GameVersion.COLO: itemlist = Main.g3coloitems; break; - default: itemlist = Main.g3items; break; - } - B_GiveAll.Visible = false; - break; - default: - itemlist = Main.itemlist; - break; - } + if (SAV.Generation <= 3) + B_GiveAll.Visible = false; + itemlist = Main.GameStrings.getItemStrings(SAV.Generation, SAV.Version); + for (int i = 0; i < itemlist.Length; i++) if (itemlist[i] == "") itemlist[i] = $"(Item #{i.ToString("000")})"; diff --git a/PKHeX/Subforms/Save Editors/SAV_Wondercard.cs b/PKHeX/Subforms/Save Editors/SAV_Wondercard.cs index ac2ca595c..e477ea0e5 100644 --- a/PKHeX/Subforms/Save Editors/SAV_Wondercard.cs +++ b/PKHeX/Subforms/Save Editors/SAV_Wondercard.cs @@ -482,7 +482,7 @@ private static string getDescription(MysteryGift gift) string s = gift.getCardHeader() + Environment.NewLine; if (gift.IsItem) { - s += "Item: " + Main.itemlist[gift.Item] + Environment.NewLine + "Quantity: " + gift.Quantity; + s += "Item: " + Main.GameStrings.itemlist[gift.Item] + Environment.NewLine + "Quantity: " + gift.Quantity; return s; } if (gift.IsPokémon) @@ -491,9 +491,9 @@ private static string getDescription(MysteryGift gift) try { - s += $"{Main.specieslist[pk.Species]} @ {Main.itemlist[pk.HeldItem]} --- "; - s += (pk.IsEgg ? Main.eggname : $"{pk.OT_Name} - {pk.TID.ToString("00000")}/{pk.SID.ToString("00000")}") + Environment.NewLine; - s += $"{Main.movelist[pk.Move1]} / {Main.movelist[pk.Move2]} / {Main.movelist[pk.Move3]} / {Main.movelist[pk.Move4]}" + Environment.NewLine; + s += $"{Main.GameStrings.specieslist[pk.Species]} @ {Main.GameStrings.itemlist[pk.HeldItem]} --- "; + s += (pk.IsEgg ? Main.GameStrings.eggname : $"{pk.OT_Name} - {pk.TID.ToString("00000")}/{pk.SID.ToString("00000")}") + Environment.NewLine; + s += $"{Main.GameStrings.movelist[pk.Move1]} / {Main.GameStrings.movelist[pk.Move2]} / {Main.GameStrings.movelist[pk.Move3]} / {Main.GameStrings.movelist[pk.Move4]}" + Environment.NewLine; } catch { s += "Unable to create gift description."; } return s; diff --git a/PKHeX/Subforms/frmReport.cs b/PKHeX/Subforms/frmReport.cs index 2b0203bc1..7b11aa83a 100644 --- a/PKHeX/Subforms/frmReport.cs +++ b/PKHeX/Subforms/frmReport.cs @@ -19,23 +19,23 @@ public class Preview public string Position => pkm.Identifier; public Image Sprite => pkm.Sprite; public string Nickname => pkm.Nickname; - public string Species => Main.specieslist[pkm.Species]; - public string Nature => Main.natures[pkm.Nature]; + public string Species => Main.GameStrings.specieslist[pkm.Species]; + public string Nature => Main.GameStrings.natures[pkm.Nature]; public string Gender => Main.gendersymbols[pkm.Gender]; public string ESV => pkm.PSV.ToString("0000"); - public string HP_Type => Main.types[pkm.HPType+1]; - public string Ability => Main.abilitylist[pkm.Ability]; - public string Move1 => Main.movelist[pkm.Move1]; - public string Move2 => Main.movelist[pkm.Move2]; - public string Move3 => Main.movelist[pkm.Move3]; - public string Move4 => Main.movelist[pkm.Move4]; - public string HeldItem => Main.itemlist[pkm.HeldItem]; + public string HP_Type => Main.GameStrings.types[pkm.HPType+1]; + public string Ability => Main.GameStrings.abilitylist[pkm.Ability]; + public string Move1 => Main.GameStrings.movelist[pkm.Move1]; + public string Move2 => Main.GameStrings.movelist[pkm.Move2]; + public string Move3 => Main.GameStrings.movelist[pkm.Move3]; + public string Move4 => Main.GameStrings.movelist[pkm.Move4]; + public string HeldItem => Main.GameStrings.itemlist[pkm.HeldItem]; public string MetLoc => PKX.getLocation(pkm, eggmet: false); public string EggLoc => PKX.getLocation(pkm, eggmet: true); - public string Ball => Main.balllist[pkm.Ball]; + public string Ball => Main.GameStrings.balllist[pkm.Ball]; public string OT => pkm.OT_Name; - public string Version => Main.gamelist[pkm.Version]; - public string OTLang => Main.gamelanguages[pkm.Language] ?? $"UNK {pkm.Language}"; + public string Version => Main.GameStrings.gamelist[pkm.Version]; + public string OTLang => Main.GameStrings.gamelanguages[pkm.Language] ?? $"UNK {pkm.Language}"; public string CountryID => pkm.Format > 5 ? ((PK6) pkm).Country.ToString() : "N/A"; public string RegionID => pkm.Format > 5 ? ((PK6) pkm).Region.ToString() : "N/A"; public string DSRegionID => pkm.Format > 5 ? ((PK6) pkm).ConsoleRegion.ToString() : "N/A"; @@ -91,10 +91,10 @@ public class Preview public int Move2_PPUp => pkm.Move2_PPUps; public int Move3_PPUp => pkm.Move3_PPUps; public int Move4_PPUp => pkm.Move4_PPUps; - public string Relearn1 => Main.movelist[pkm.RelearnMove1]; - public string Relearn2 => Main.movelist[pkm.RelearnMove2]; - public string Relearn3 => Main.movelist[pkm.RelearnMove3]; - public string Relearn4 => Main.movelist[pkm.RelearnMove4]; + public string Relearn1 => Main.GameStrings.movelist[pkm.RelearnMove1]; + public string Relearn2 => Main.GameStrings.movelist[pkm.RelearnMove2]; + public string Relearn3 => Main.GameStrings.movelist[pkm.RelearnMove3]; + public string Relearn4 => Main.GameStrings.movelist[pkm.RelearnMove4]; public ushort Checksum => pkm.Checksum; public int mFriendship => pkm.OT_Friendship; public int OT_Affection => pkm.OT_Affection;