From 277b1b658d924f03481ca5e00487c817044e1a2f Mon Sep 17 00:00:00 2001 From: Kurt Date: Mon, 2 Aug 2021 20:59:40 -0700 Subject: [PATCH] Un-nest 3ds console region bitflags Insert 3DS into the name to indicate that it's for the 3DS --- .../Enums/{RegionID.cs => Region3DSIndex.cs} | 2 +- .../Verifiers/MysteryGiftRestriction.cs | 14 ++-- .../Legality/Restrictions/Vivillon3DS.cs | 68 ++++++++++--------- PKHeX.Core/PKM/Shared/IRegionOrigin.cs | 2 +- 4 files changed, 46 insertions(+), 40 deletions(-) rename PKHeX.Core/Game/Enums/{RegionID.cs => Region3DSIndex.cs} (88%) diff --git a/PKHeX.Core/Game/Enums/RegionID.cs b/PKHeX.Core/Game/Enums/Region3DSIndex.cs similarity index 88% rename from PKHeX.Core/Game/Enums/RegionID.cs rename to PKHeX.Core/Game/Enums/Region3DSIndex.cs index 9baed0d01..3d04a6e12 100644 --- a/PKHeX.Core/Game/Enums/RegionID.cs +++ b/PKHeX.Core/Game/Enums/Region3DSIndex.cs @@ -3,7 +3,7 @@ /// /// 3DS Console Region Identifiers used for Generation 6 & 7 Mystery Gifts /// - public enum RegionID : byte + public enum Region3DSIndex : byte { None = 0, Japan = 1, diff --git a/PKHeX.Core/Legality/Encounters/Verifiers/MysteryGiftRestriction.cs b/PKHeX.Core/Legality/Encounters/Verifiers/MysteryGiftRestriction.cs index ff5d39d6d..8cf39f583 100644 --- a/PKHeX.Core/Legality/Encounters/Verifiers/MysteryGiftRestriction.cs +++ b/PKHeX.Core/Legality/Encounters/Verifiers/MysteryGiftRestriction.cs @@ -20,12 +20,12 @@ public enum MysteryGiftRestriction RegionBase = LangKorean, LangRestrict = LangJapanese | LangEnglish | LangFrench | LangItalian | LangGerman | LangSpanish | LangKorean, - RegJP = RegionBase << RegionID.Japan, - RegNA = RegionBase << RegionID.NorthAmerica, - RegEU = RegionBase << RegionID.Europe, - RegZH = RegionBase << RegionID.China, - RegKO = RegionBase << RegionID.Korea, - RegTW = RegionBase << RegionID.Taiwan, + RegJP = RegionBase << Region3DSIndex.Japan, + RegNA = RegionBase << Region3DSIndex.NorthAmerica, + RegEU = RegionBase << Region3DSIndex.Europe, + RegZH = RegionBase << Region3DSIndex.China, + RegKO = RegionBase << Region3DSIndex.Korea, + RegTW = RegionBase << Region3DSIndex.Taiwan, RegionRestrict = RegJP | RegNA | RegEU | RegZH | RegKO | RegTW, @@ -56,7 +56,7 @@ public static int GetSuggestedLanguage(this MysteryGiftRestriction value) public static int GetSuggestedRegion(this MysteryGiftRestriction value) { - for (int i = (int)RegionID.Japan; i <= (int)RegionID.Taiwan; i++) + for (int i = (int)Region3DSIndex.Japan; i <= (int)Region3DSIndex.Taiwan; i++) { if (value.HasFlagFast((MysteryGiftRestriction)((int)MysteryGiftRestriction.RegionBase << i))) return i; diff --git a/PKHeX.Core/Legality/Restrictions/Vivillon3DS.cs b/PKHeX.Core/Legality/Restrictions/Vivillon3DS.cs index 4a4f91dd9..b3ddc2fc6 100644 --- a/PKHeX.Core/Legality/Restrictions/Vivillon3DS.cs +++ b/PKHeX.Core/Legality/Restrictions/Vivillon3DS.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using static PKHeX.Core.Region3DSFlags; namespace PKHeX.Core { @@ -37,40 +38,29 @@ internal FormSubregionTable(byte form, byte[] regions) /// /// List of valid regions as bitflags indexed by Vivillon form. /// - private static readonly RegionFlags[] VivillonRegionTable = + private static readonly Region3DSFlags[] VivillonRegionTable = { - /* 0 Icy Snow */ RegionFlags.Americas | RegionFlags.Europe, - /* 1 Polar */ RegionFlags.Americas | RegionFlags.Europe | RegionFlags.China, - /* 2 Tundra */ RegionFlags.Japan | RegionFlags.Europe, - /* 3 Continental */ RegionFlags.Americas | RegionFlags.Europe | RegionFlags.China | RegionFlags.Korea | RegionFlags.Taiwan, - /* 4 Garden */ RegionFlags.Europe, - /* 5 Elegant */ RegionFlags.Japan, - /* 6 Meadow */ RegionFlags.Europe, - /* 7 Modern */ RegionFlags.Americas, - /* 8 Marine */ RegionFlags.Americas | RegionFlags.Europe, - /* 9 Archipelago */ RegionFlags.Americas | RegionFlags.Europe, - /*10 High Plains */ RegionFlags.Americas | RegionFlags.Europe | RegionFlags.China, - /*11 Sandstorm */ RegionFlags.Americas | RegionFlags.Europe, - /*12 River */ RegionFlags.Europe, - /*13 Monsoon */ RegionFlags.Japan | RegionFlags.Europe | RegionFlags.China | RegionFlags.Taiwan, - /*14 Savanna */ RegionFlags.Americas, - /*15 Sun */ RegionFlags.Americas | RegionFlags.Europe, - /*16 Ocean */ RegionFlags.Americas | RegionFlags.Europe, - /*17 Jungle */ RegionFlags.Americas | RegionFlags.Europe, + /* 0 Icy Snow */ Americas | Europe, + /* 1 Polar */ Americas | Europe | China, + /* 2 Tundra */ Japan | Europe, + /* 3 Continental */ Americas | Europe | China | Korea | Taiwan, + /* 4 Garden */ Europe, + /* 5 Elegant */ Japan, + /* 6 Meadow */ Europe, + /* 7 Modern */ Americas, + /* 8 Marine */ Americas | Europe, + /* 9 Archipelago */ Americas | Europe, + /*10 High Plains */ Americas | Europe | China, + /*11 Sandstorm */ Americas | Europe, + /*12 River */ Europe, + /*13 Monsoon */ Japan | Europe | China | Taiwan, + /*14 Savanna */ Americas, + /*15 Sun */ Americas | Europe, + /*16 Ocean */ Americas | Europe, + /*17 Jungle */ Americas | Europe, }; - [Flags] - public enum RegionFlags : ushort - { - Japan = 1, - Americas = 1 << 1, - Europe = 1 << 2, - China = 1 << 4, - Korea = 1 << 5, - Taiwan = 1 << 6, - }; - - public static RegionFlags GetConsoleRegionFlag(int consoleRegion) => (RegionFlags)(1 << consoleRegion); + public static Region3DSFlags GetConsoleRegionFlag(int consoleRegion) => (Region3DSFlags)(1 << consoleRegion); /// /// List of valid countries for each Vivillon form. @@ -271,4 +261,20 @@ private static int GetPattern(byte country) return Math.Max(0, form); } } + + /// + /// Console Region Flags for the 3DS. + /// + /// Not to be confused with . + [Flags] + public enum Region3DSFlags : ushort + { + None, + Japan = 1, + Americas = 1 << 1, + Europe = 1 << 2, + China = 1 << 4, + Korea = 1 << 5, + Taiwan = 1 << 6, + } } diff --git a/PKHeX.Core/PKM/Shared/IRegionOrigin.cs b/PKHeX.Core/PKM/Shared/IRegionOrigin.cs index 2ff3874ff..cfc351681 100644 --- a/PKHeX.Core/PKM/Shared/IRegionOrigin.cs +++ b/PKHeX.Core/PKM/Shared/IRegionOrigin.cs @@ -3,7 +3,7 @@ public interface IRegionOrigin { /// Console hardware region. - /// + /// byte ConsoleRegion { get; set; } /// Console's configured Country via System Settings. byte Country { get; set; }