From b7211000b0e4b49180efc0ef99bb2fc58d12cb57 Mon Sep 17 00:00:00 2001 From: Kurt Date: Fri, 31 Jul 2020 13:53:42 -0700 Subject: [PATCH] Split Country/Region/ConsoleRegion from ITrainerInfo Only present in mainline gen6/7 game pairs, so it's not wise to have it for all games --- PKHeX.Core/Editing/PKM/EditPKMUtil.cs | 8 ++++---- .../Encounters/EncounterMisc/EncounterEgg.cs | 4 +++- .../Encounters/EncounterSlot/EncounterSlot.cs | 7 +++++-- .../Legality/Structures/ITrainerInfo.cs | 19 +++++++++---------- .../Legality/Structures/SimpleTrainerInfo.cs | 6 +++--- PKHeX.Core/MysteryGifts/WC6.cs | 15 ++++++++++++--- PKHeX.Core/MysteryGifts/WC7.cs | 15 ++++++++++++--- PKHeX.Core/PKM/PK6.cs | 12 +++++++++--- PKHeX.Core/PKM/Shared/IGeoTrack.cs | 6 +----- PKHeX.Core/PKM/Shared/IRegionOrigin.cs | 19 +++++++++++++++++++ PKHeX.Core/PKM/Util/PKMConverter.cs | 14 +++++++------- PKHeX.Core/Saves/SAV6.cs | 8 ++++---- PKHeX.Core/Saves/SAV7.cs | 8 ++++---- PKHeX.Core/Saves/SaveFile.cs | 3 --- PKHeX.Core/Saves/Util/SaveUtil.cs | 8 ++------ .../Controls/PKM Editor/PKMEditor.cs | 8 ++++---- .../Subforms/Save Editors/Gen6/SAV_Trainer.cs | 4 ++-- .../Save Editors/Gen7/SAV_Trainer7.cs | 4 ++-- 18 files changed, 102 insertions(+), 66 deletions(-) create mode 100644 PKHeX.Core/PKM/Shared/IRegionOrigin.cs diff --git a/PKHeX.Core/Editing/PKM/EditPKMUtil.cs b/PKHeX.Core/Editing/PKM/EditPKMUtil.cs index cc5d771ff..955fa0688 100644 --- a/PKHeX.Core/Editing/PKM/EditPKMUtil.cs +++ b/PKHeX.Core/Editing/PKM/EditPKMUtil.cs @@ -55,11 +55,11 @@ public static void TemplateFields(PKM pk, ITrainerInfo tr) pk.OT_Gender = tr.Gender; pk.TID = tr.TID; pk.SID = tr.SID; - if (tr.ConsoleRegion >= 0 && pk is IGeoTrack gt) + if (tr is IRegionOrigin o && pk is IRegionOrigin gt) { - gt.ConsoleRegion = tr.ConsoleRegion; - gt.Country = tr.Country; - gt.Region = tr.SubRegion; + gt.ConsoleRegion = o.ConsoleRegion; + gt.Country = o.Country; + gt.Region = o.Region; } // Copy OT trash bytes for sensitive games (Gen1/2) diff --git a/PKHeX.Core/Legality/Encounters/EncounterMisc/EncounterEgg.cs b/PKHeX.Core/Legality/Encounters/EncounterMisc/EncounterEgg.cs index d9b613310..2f617fe1c 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterMisc/EncounterEgg.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterMisc/EncounterEgg.cs @@ -82,7 +82,9 @@ private void SetAltForm(PKM pk, ITrainerInfo sav) case (int)Core.Species.Scatterbug: case (int)Core.Species.Spewpa: case (int)Core.Species.Vivillon: - pk.AltForm = Legal.GetVivillonPattern((byte)sav.Country, (byte)sav.SubRegion); + if (sav is IRegionOrigin o) + pk.AltForm = Legal.GetVivillonPattern((byte)o.Country, (byte)o.Region); + // else 0 break; } } diff --git a/PKHeX.Core/Legality/Encounters/EncounterSlot/EncounterSlot.cs b/PKHeX.Core/Legality/Encounters/EncounterSlot/EncounterSlot.cs index a67b5b326..f74851e5f 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterSlot/EncounterSlot.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterSlot/EncounterSlot.cs @@ -193,8 +193,11 @@ private static int GetWildAltForm(PKM pk, int form, ITrainerInfo sav) return Util.Rand.Next(pk.PersonalInfo.FormeCount); int spec = pk.Species; - if (spec == (int)Core.Species.Scatterbug || spec == (int)Core.Species.Spewpa || spec == (int)Core.Species.Vivillon) - return Legal.GetVivillonPattern((byte)sav.Country, (byte)sav.SubRegion); + if ((int) Core.Species.Scatterbug <= spec && spec <= (int) Core.Species.Vivillon) + { + if (sav is IRegionOrigin o) + return Legal.GetVivillonPattern((byte)o.Country, (byte)o.Region); + } return 0; } diff --git a/PKHeX.Core/Legality/Structures/ITrainerInfo.cs b/PKHeX.Core/Legality/Structures/ITrainerInfo.cs index 4b6f44775..da8e5772d 100644 --- a/PKHeX.Core/Legality/Structures/ITrainerInfo.cs +++ b/PKHeX.Core/Legality/Structures/ITrainerInfo.cs @@ -10,10 +10,6 @@ public interface ITrainerInfo : ITrainerID int Game { get; } int Language { get; } - int Country { get; } - int SubRegion { get; } - int ConsoleRegion { get; } - int Generation { get; } } @@ -30,9 +26,12 @@ public static void ApplyTo(this ITrainerInfo info, PKM pk) if (!(pk is IGeoTrack tr)) return; - tr.Country = info.Country; - tr.Region = info.SubRegion; - tr.ConsoleRegion = info.ConsoleRegion; + + if (!(info is IRegionOrigin o)) + return; + tr.Country = o.Country; + tr.Region = o.Region; + tr.ConsoleRegion = o.ConsoleRegion; } public static void ApplyHandlingTrainerInfo(this ITrainerInfo sav, PKM pk, bool force = false) @@ -45,11 +44,11 @@ public static void ApplyHandlingTrainerInfo(this ITrainerInfo sav, PKM pk, bool pk.HT_Friendship = pk.OT_Friendship; pk.CurrentHandler = 1; - if (pk.Format == 6) + if (pk.Format == 6 && sav is IRegionOrigin o) { var g = (IGeoTrack) pk; - g.Geo1_Country = sav.Country; - g.Geo1_Region = sav.SubRegion; + g.Geo1_Country = o.Country; + g.Geo1_Region = o.Region; ((PK6)pk).TradeMemory(true); } } diff --git a/PKHeX.Core/Legality/Structures/SimpleTrainerInfo.cs b/PKHeX.Core/Legality/Structures/SimpleTrainerInfo.cs index 07b7ae9ba..068c0c4ce 100644 --- a/PKHeX.Core/Legality/Structures/SimpleTrainerInfo.cs +++ b/PKHeX.Core/Legality/Structures/SimpleTrainerInfo.cs @@ -1,6 +1,6 @@ namespace PKHeX.Core { - public sealed class SimpleTrainerInfo : ITrainerInfo + public sealed class SimpleTrainerInfo : ITrainerInfo, IRegionOrigin { public string OT { get; set; } = "PKHeX"; public int TID { get; set; } = 12345; @@ -9,7 +9,7 @@ public sealed class SimpleTrainerInfo : ITrainerInfo public int Language { get; set; } = (int)LanguageID.English; public int ConsoleRegion { get; set; } = 1; // North America - public int SubRegion { get; set; } = 7; // California + public int Region { get; set; } = 7; // California public int Country { get; set; } = 49; // USA public int Game { get; } @@ -19,7 +19,7 @@ public SimpleTrainerInfo(GameVersion game = GameVersion.SW) { Game = (int) game; if (GameVersion.GG.Contains(game) || game.GetGeneration() >= 8) - ConsoleRegion = SubRegion = Country = 0; + ConsoleRegion = Region = Country = 0; } } } diff --git a/PKHeX.Core/MysteryGifts/WC6.cs b/PKHeX.Core/MysteryGifts/WC6.cs index 6535a801a..78a2dab73 100644 --- a/PKHeX.Core/MysteryGifts/WC6.cs +++ b/PKHeX.Core/MysteryGifts/WC6.cs @@ -286,9 +286,6 @@ public override PKM ConvertToPKM(ITrainerInfo sav, EncounterCriteria criteria) Version = OriginGame != 0 ? OriginGame : sav.Game, Language = Language != 0 ? Language : sav.Language, Ball = Ball, - Country = sav.Country, - Region = sav.SubRegion, - ConsoleRegion = sav.ConsoleRegion, Move1 = Move1, Move2 = Move2, Move3 = Move3, Move4 = Move4, RelearnMove1 = RelearnMove1, RelearnMove2 = RelearnMove2, RelearnMove3 = RelearnMove3, RelearnMove4 = RelearnMove4, @@ -337,6 +334,18 @@ public override PKM ConvertToPKM(ITrainerInfo sav, EncounterCriteria criteria) EVs = EVs, }; + + if (sav is IRegionOrigin o) + { + pk.Country = o.Country; + pk.Region = o.Region; + pk.ConsoleRegion = o.ConsoleRegion; + } + else + { + pk.SetDefaultRegionOrigins(); + } + pk.SetMaximumPPCurrent(); pk.MetDate = Date ?? DateTime.Now; diff --git a/PKHeX.Core/MysteryGifts/WC7.cs b/PKHeX.Core/MysteryGifts/WC7.cs index 9a57c0d71..7650d1e72 100644 --- a/PKHeX.Core/MysteryGifts/WC7.cs +++ b/PKHeX.Core/MysteryGifts/WC7.cs @@ -330,9 +330,6 @@ public override PKM ConvertToPKM(ITrainerInfo sav, EncounterCriteria criteria) Version = OriginGame != 0 ? OriginGame : sav.Game, Language = Language != 0 ? Language : sav.Language, Ball = Ball, - Country = sav.Country, - Region = sav.SubRegion, - ConsoleRegion = sav.ConsoleRegion, Move1 = Move1, Move2 = Move2, Move3 = Move3, Move4 = Move4, RelearnMove1 = RelearnMove1, RelearnMove2 = RelearnMove2, RelearnMove3 = RelearnMove3, RelearnMove4 = RelearnMove4, @@ -381,6 +378,18 @@ public override PKM ConvertToPKM(ITrainerInfo sav, EncounterCriteria criteria) EVs = EVs, }; + + if (sav is IRegionOrigin o) + { + pk.Country = o.Country; + pk.Region = o.Region; + pk.ConsoleRegion = o.ConsoleRegion; + } + else + { + pk.SetDefaultRegionOrigins(); + } + pk.SetMaximumPPCurrent(); if ((sav.Generation > Format && OriginGame == 0) || !CanBeReceivedByVersion(pk.Version)) diff --git a/PKHeX.Core/PKM/PK6.cs b/PKHeX.Core/PKM/PK6.cs index ed4af902b..4eaf3d197 100644 --- a/PKHeX.Core/PKM/PK6.cs +++ b/PKHeX.Core/PKM/PK6.cs @@ -410,8 +410,11 @@ protected override bool TradeOT(ITrainerInfo tr) return false; CurrentHandler = 0; - if (!IsUntraded && (tr.Country != Geo1_Country || tr.SubRegion != Geo1_Region)) - this.TradeGeoLocation(tr.Country, tr.SubRegion); + if (tr is IRegionOrigin o) + { + if (!IsUntraded && (o.Country != Geo1_Country || o.Region != Geo1_Region)) + this.TradeGeoLocation(o.Country, o.Region); + } return true; } @@ -419,7 +422,10 @@ protected override bool TradeOT(ITrainerInfo tr) protected override void TradeHT(ITrainerInfo tr) { if (tr.OT != HT_Name || tr.Gender != HT_Gender || (Geo1_Country == 0 && Geo1_Region == 0 && !IsUntradedEvent6)) - this.TradeGeoLocation(tr.Country, tr.SubRegion); + { + if (tr is IRegionOrigin o) + this.TradeGeoLocation(o.Country, o.Region); + } if (tr.OT != HT_Name) { diff --git a/PKHeX.Core/PKM/Shared/IGeoTrack.cs b/PKHeX.Core/PKM/Shared/IGeoTrack.cs index df8ea2851..84059339d 100644 --- a/PKHeX.Core/PKM/Shared/IGeoTrack.cs +++ b/PKHeX.Core/PKM/Shared/IGeoTrack.cs @@ -3,12 +3,8 @@ /// /// Tracks Geolocation history of a /// - public interface IGeoTrack + public interface IGeoTrack : IRegionOrigin { - int ConsoleRegion { get; set; } - int Country { get; set; } - int Region { get; set; } - int Geo1_Region { get; set; } int Geo2_Region { get; set; } int Geo3_Region { get; set; } diff --git a/PKHeX.Core/PKM/Shared/IRegionOrigin.cs b/PKHeX.Core/PKM/Shared/IRegionOrigin.cs new file mode 100644 index 000000000..dc67b2617 --- /dev/null +++ b/PKHeX.Core/PKM/Shared/IRegionOrigin.cs @@ -0,0 +1,19 @@ +namespace PKHeX.Core +{ + public interface IRegionOrigin + { + int ConsoleRegion { get; set; } + int Country { get; set; } + int Region { get; set; } + } + + public static partial class Extensions + { + public static void SetDefaultRegionOrigins(this IRegionOrigin o) + { + o.ConsoleRegion = 1; // North America + o.Region = 7; // California + o.Country = 49; // USA + } + } +} diff --git a/PKHeX.Core/PKM/Util/PKMConverter.cs b/PKHeX.Core/PKM/Util/PKMConverter.cs index dae8cf715..6c277618b 100644 --- a/PKHeX.Core/PKM/Util/PKMConverter.cs +++ b/PKHeX.Core/PKM/Util/PKMConverter.cs @@ -15,12 +15,12 @@ public static class PKMConverter public static void SetPrimaryTrainer(ITrainerInfo t) { Trainer = t; - if (t.ConsoleRegion != 0) - Trainer67 = t; + if (t is IRegionOrigin o) + Trainer67 = o; } private static ITrainerInfo Trainer { get; set; } = new SimpleTrainerInfo(); - private static ITrainerInfo Trainer67 { get; set; } = new SimpleTrainerInfo(GameVersion.SN); + private static IRegionOrigin Trainer67 { get; set; } = new SimpleTrainerInfo(GameVersion.SN); public static string OT_Name => Trainer.OT; public static int OT_Gender => Trainer.Gender; public static int Language => Trainer.Language; @@ -30,17 +30,17 @@ public static void SetPrimaryTrainer(ITrainerInfo t) public static void SetConsoleRegionData3DS(IGeoTrack pkm) { - var trainer = Trainer.ConsoleRegion != 0 ? Trainer : Trainer67; + var trainer = Trainer is IRegionOrigin r ? r : Trainer67; pkm.ConsoleRegion = trainer.ConsoleRegion; pkm.Country = trainer.Country; - pkm.Region = trainer.SubRegion; + pkm.Region = trainer.Region; } public static void SetFirstCountryRegion(IGeoTrack pkm) { - var trainer = Trainer.ConsoleRegion != 0 ? Trainer : Trainer67; + var trainer = Trainer is IRegionOrigin r ? r : Trainer67; pkm.Geo1_Country = trainer.Country; - pkm.Geo1_Region = trainer.SubRegion; + pkm.Geo1_Region = trainer.Region; } /// diff --git a/PKHeX.Core/Saves/SAV6.cs b/PKHeX.Core/Saves/SAV6.cs index 1fd33c3b0..3592e9722 100644 --- a/PKHeX.Core/Saves/SAV6.cs +++ b/PKHeX.Core/Saves/SAV6.cs @@ -6,7 +6,7 @@ namespace PKHeX.Core /// /// Generation 6 object. /// - public abstract class SAV6 : SAV_BEEF, ITrainerStatRecord, ISaveBlock6Core + public abstract class SAV6 : SAV_BEEF, ITrainerStatRecord, ISaveBlock6Core, IRegionOrigin { // Save Data Attributes protected override string BAKText => $"{OT} ({Version}) - {Played.LastSavedTime}"; @@ -61,9 +61,9 @@ public abstract class SAV6 : SAV_BEEF, ITrainerStatRecord, ISaveBlock6Core public override int Gender { get => Status.Gender; set => Status.Gender = value; } public override int Language { get => Status.Language; set => Status.Language = value; } public override string OT { get => Status.OT; set => Status.OT = value; } - public override int SubRegion { get => Status.SubRegion; set => Status.SubRegion = value; } - public override int Country { get => Status.Country; set => Status.Country = value; } - public override int ConsoleRegion { get => Status.ConsoleRegion; set => Status.ConsoleRegion = value; } + public int Region { get => Status.SubRegion; set => Status.SubRegion = value; } + public int Country { get => Status.Country; set => Status.Country = value; } + public int ConsoleRegion { get => Status.ConsoleRegion; set => Status.ConsoleRegion = value; } public override int GameSyncIDSize => MyStatus6.GameSyncIDSize; // 64 bits public override string GameSyncID { get => Status.GameSyncID; set => Status.GameSyncID = value; } public override int PlayedHours { get => Played.PlayedHours; set => Played.PlayedHours = value; } diff --git a/PKHeX.Core/Saves/SAV7.cs b/PKHeX.Core/Saves/SAV7.cs index 222a8a913..12aa277cf 100644 --- a/PKHeX.Core/Saves/SAV7.cs +++ b/PKHeX.Core/Saves/SAV7.cs @@ -7,7 +7,7 @@ namespace PKHeX.Core /// /// Generation 7 object. /// - public abstract class SAV7 : SAV_BEEF, ITrainerStatRecord, ISaveBlock7Main + public abstract class SAV7 : SAV_BEEF, ITrainerStatRecord, ISaveBlock7Main, IRegionOrigin { // Save Data Attributes protected override string BAKText => $"{OT} ({Version}) - {Played.LastSavedTime}"; @@ -140,9 +140,9 @@ public override byte[] SetString(string value, int maxLength, int PadToSize = 0, public override int Gender { get => MyStatus.Gender; set => MyStatus.Gender = value; } public override int GameSyncIDSize => MyStatus7.GameSyncIDSize; // 64 bits public override string GameSyncID { get => MyStatus.GameSyncID; set => MyStatus.GameSyncID = value; } - public override int SubRegion { get => MyStatus.SubRegion; set => MyStatus.SubRegion = value; } - public override int Country { get => MyStatus.Country; set => MyStatus.Country = value; } - public override int ConsoleRegion { get => MyStatus.ConsoleRegion; set => MyStatus.ConsoleRegion = value; } + public int Region { get => MyStatus.SubRegion; set => MyStatus.SubRegion = value; } + public int Country { get => MyStatus.Country; set => MyStatus.Country = value; } + public int ConsoleRegion { get => MyStatus.ConsoleRegion; set => MyStatus.ConsoleRegion = value; } public override int Language { get => MyStatus.Language; set => MyStatus.Language = value; } public override string OT { get => MyStatus.OT; set => MyStatus.OT = value; } public override int MultiplayerSpriteID { get => MyStatus.MultiplayerSpriteID; set => MyStatus.MultiplayerSpriteID = value; } diff --git a/PKHeX.Core/Saves/SaveFile.cs b/PKHeX.Core/Saves/SaveFile.cs index 8fffde343..8c9ce97a9 100644 --- a/PKHeX.Core/Saves/SaveFile.cs +++ b/PKHeX.Core/Saves/SaveFile.cs @@ -250,9 +250,6 @@ public virtual MysteryGiftAlbum GiftAlbum public virtual int MultiplayerSpriteID { get => 0; set { } } public int TrainerID7 { get => (int)((uint)(TID | (SID << 16)) % 1000000); set => SetID7(TrainerSID7, value); } public int TrainerSID7 { get => (int)((uint)(TID | (SID << 16)) / 1000000); set => SetID7(value, TrainerID7); } - public virtual int Country { get => -1; set { } } - public virtual int ConsoleRegion { get => -1; set { } } - public virtual int SubRegion { get => -1; set { } } public virtual int MaxMoney => 9999999; public virtual int MaxCoins => 9999; diff --git a/PKHeX.Core/Saves/Util/SaveUtil.cs b/PKHeX.Core/Saves/Util/SaveUtil.cs index 2687450f9..f3af0033d 100644 --- a/PKHeX.Core/Saves/Util/SaveUtil.cs +++ b/PKHeX.Core/Saves/Util/SaveUtil.cs @@ -570,12 +570,8 @@ public static SaveFile GetBlankSAV(GameVersion game, string trainerName) SAV.Language = (int)LanguageID.English; // English // Only set geolocation data for 3DS titles - if (6 <= SAV.Generation && SAV.Generation <= 7 && !(SAV is SAV7b)) - { - SAV.Country = 49; // USA - SAV.SubRegion = 7; // CA - SAV.ConsoleRegion = 1; // Americas - } + if (SAV is IRegionOrigin o) + o.SetDefaultRegionOrigins(); return SAV; } diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs index 2b63b90bb..eb0550f72 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs @@ -394,11 +394,11 @@ private void SetDetailsOT(ITrainerInfo tr) if (lang <= 0) lang = (int)LanguageID.English; CB_Language.SelectedValue = lang; - if (tr.ConsoleRegion != 0) + if (tr is IRegionOrigin o) { - CB_3DSReg.SelectedValue = tr.ConsoleRegion; - CB_Country.SelectedValue = tr.Country; - CB_SubRegion.SelectedValue = tr.SubRegion; + CB_3DSReg.SelectedValue = o.ConsoleRegion; + CB_Country.SelectedValue = o.Country; + CB_SubRegion.SelectedValue = o.Region; } // Copy OT trash bytes for sensitive games (Gen1/2) diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_Trainer.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_Trainer.cs index 7760517ca..964cd2d04 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_Trainer.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_Trainer.cs @@ -121,7 +121,7 @@ private void GetTextBoxes() TB_Saying5.Text = status.Saying5; CB_Country.SelectedValue = SAV.Country; - CB_Region.SelectedValue = SAV.SubRegion; + CB_Region.SelectedValue = SAV.Region; CB_3DSReg.SelectedValue = SAV.ConsoleRegion; CB_Language.SelectedValue = SAV.Language; @@ -200,7 +200,7 @@ private void Save() SAV.TID = (ushort)Util.ToUInt32(MT_TID.Text); SAV.SID = (ushort)Util.ToUInt32(MT_SID.Text); SAV.Money = Util.ToUInt32(MT_Money.Text); - SAV.SubRegion = WinFormsUtil.GetIndex(CB_Region); + SAV.Region = WinFormsUtil.GetIndex(CB_Region); SAV.Country = WinFormsUtil.GetIndex(CB_Country); SAV.ConsoleRegion = WinFormsUtil.GetIndex(CB_3DSReg); SAV.Language = WinFormsUtil.GetIndex(CB_Language); diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_Trainer7.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_Trainer7.cs index 5057a7b1f..19f2d2b33 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_Trainer7.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_Trainer7.cs @@ -107,7 +107,7 @@ private void GetTextBoxes() MT_Money.Text = SAV.Money.ToString(); CB_Country.SelectedValue = SAV.Country; - CB_Region.SelectedValue = SAV.SubRegion; + CB_Region.SelectedValue = SAV.Region; CB_3DSReg.SelectedValue = SAV.ConsoleRegion; CB_Language.SelectedValue = SAV.Language; var timeA = SAV.GameTime.AlolaTime; @@ -325,7 +325,7 @@ private void SaveTrainerInfo() SAV.Gender = (byte)CB_Gender.SelectedIndex; SAV.Money = Util.ToUInt32(MT_Money.Text); - SAV.SubRegion = WinFormsUtil.GetIndex(CB_Region); + SAV.Region = WinFormsUtil.GetIndex(CB_Region); SAV.Country = WinFormsUtil.GetIndex(CB_Country); SAV.ConsoleRegion = WinFormsUtil.GetIndex(CB_3DSReg); SAV.Language = WinFormsUtil.GetIndex(CB_Language);