mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-09-07 19:38:21 -05:00
Revise region handling and game version mapping
Updated region handling logic in XK3.cs to treat PAL and NTSC_U as equivalent and adjusted remapping logic accordingly. Added a check in PKMEditor.cs to map GameVersion.COLO and GameVersion.XD to GameVersion.CXD for consistency in filtered data sources.
This commit is contained in:
@@ -257,10 +257,10 @@ public override string GetString(ReadOnlySpan<byte> data)
|
||||
if (current == GCRegion.NoRegion)
|
||||
return StringConverter3GC.GetString(data); // don't bother
|
||||
var language = Language;
|
||||
var expect = language == 1 ? GCRegion.NTSC_J : GCRegion.NTSC_U;
|
||||
if (current == expect)
|
||||
if (CurrentRegion == GCRegion.NTSC_J == (language == 1)) // treat PAL and NTSC_U as equivalent
|
||||
return StringConverter3GC.GetString(data); // no remap needed
|
||||
|
||||
var expect = language == 1 ? GCRegion.NTSC_J : GCRegion.NTSC_U;
|
||||
Span<byte> remap = stackalloc byte[data.Length];
|
||||
data.CopyTo(remap);
|
||||
StringConverter3GC.RemapGlyphsBetweenRegions3GC(remap, current, expect, language);
|
||||
@@ -273,10 +273,10 @@ public override int LoadString(ReadOnlySpan<byte> data, Span<char> destBuffer)
|
||||
if (current == GCRegion.NoRegion)
|
||||
return StringConverter3GC.LoadString(data, destBuffer); // don't bother
|
||||
var language = Language;
|
||||
var expect = language == 1 ? GCRegion.NTSC_J : GCRegion.NTSC_U;
|
||||
if (current == expect)
|
||||
if (CurrentRegion == GCRegion.NTSC_J == (language == 1)) // treat PAL and NTSC_U as equivalent
|
||||
return StringConverter3GC.LoadString(data, destBuffer); // no remap needed
|
||||
|
||||
var expect = language == 1 ? GCRegion.NTSC_J : GCRegion.NTSC_U;
|
||||
Span<byte> remap = stackalloc byte[data.Length];
|
||||
data.CopyTo(remap);
|
||||
StringConverter3GC.RemapGlyphsBetweenRegions3GC(remap, current, expect, language);
|
||||
@@ -285,14 +285,14 @@ public override int LoadString(ReadOnlySpan<byte> data, Span<char> destBuffer)
|
||||
|
||||
public override int SetString(Span<byte> destBuffer, ReadOnlySpan<char> value, int maxLength, StringConverterOption option)
|
||||
{
|
||||
var language = Language;
|
||||
var current = CurrentRegion;
|
||||
if (current == GCRegion.NoRegion)
|
||||
return StringConverter3GC.SetString(destBuffer, value, maxLength, option); // don't bother
|
||||
var expect = language == 1 ? GCRegion.NTSC_J : GCRegion.NTSC_U;
|
||||
if (current == expect)
|
||||
var language = Language;
|
||||
if (CurrentRegion == GCRegion.NTSC_J == (language == 1)) // treat PAL and NTSC_U as equivalent
|
||||
return StringConverter3GC.SetString(destBuffer, value, maxLength, option); // no remap needed
|
||||
|
||||
var expect = language == 1 ? GCRegion.NTSC_J : GCRegion.NTSC_U;
|
||||
// ensure glyphs match the transfer route
|
||||
var result = StringConverter3GC.SetString(destBuffer, value, maxLength, option);
|
||||
StringConverter3GC.RemapGlyphsBetweenRegions3GC(destBuffer[..result], expect, current, language);
|
||||
|
||||
@@ -260,10 +260,10 @@ public override string GetString(ReadOnlySpan<byte> data)
|
||||
if (current == GCRegion.NoRegion)
|
||||
return StringConverter3GC.GetString(data); // don't bother
|
||||
var language = Language;
|
||||
var expect = language == 1 ? GCRegion.NTSC_J : GCRegion.NTSC_U;
|
||||
if (current == expect)
|
||||
if (CurrentRegion == GCRegion.NTSC_J == (language == 1)) // treat PAL and NTSC_U as equivalent
|
||||
return StringConverter3GC.GetString(data); // no remap needed
|
||||
|
||||
var expect = language == 1 ? GCRegion.NTSC_J : GCRegion.NTSC_U;
|
||||
Span<byte> remap = stackalloc byte[data.Length];
|
||||
data.CopyTo(remap);
|
||||
StringConverter3GC.RemapGlyphsBetweenRegions3GC(remap, current, expect, language);
|
||||
@@ -276,10 +276,10 @@ public override int LoadString(ReadOnlySpan<byte> data, Span<char> destBuffer)
|
||||
if (current == GCRegion.NoRegion)
|
||||
return StringConverter3GC.LoadString(data, destBuffer); // don't bother
|
||||
var language = Language;
|
||||
var expect = language == 1 ? GCRegion.NTSC_J : GCRegion.NTSC_U;
|
||||
if (current == expect)
|
||||
if (CurrentRegion == GCRegion.NTSC_J == (language == 1)) // treat PAL and NTSC_U as equivalent
|
||||
return StringConverter3GC.LoadString(data, destBuffer); // no remap needed
|
||||
|
||||
var expect = language == 1 ? GCRegion.NTSC_J : GCRegion.NTSC_U;
|
||||
Span<byte> remap = stackalloc byte[data.Length];
|
||||
data.CopyTo(remap);
|
||||
StringConverter3GC.RemapGlyphsBetweenRegions3GC(remap, current, expect, language);
|
||||
@@ -288,14 +288,14 @@ public override int LoadString(ReadOnlySpan<byte> data, Span<char> destBuffer)
|
||||
|
||||
public override int SetString(Span<byte> destBuffer, ReadOnlySpan<char> value, int maxLength, StringConverterOption option)
|
||||
{
|
||||
var language = Language;
|
||||
var current = CurrentRegion;
|
||||
if (current == GCRegion.NoRegion)
|
||||
return StringConverter3GC.SetString(destBuffer, value, maxLength, option); // don't bother
|
||||
var expect = language == 1 ? GCRegion.NTSC_J : GCRegion.NTSC_U;
|
||||
if (current == expect)
|
||||
var language = Language;
|
||||
if (CurrentRegion == GCRegion.NTSC_J == (language == 1)) // treat PAL and NTSC_U as equivalent
|
||||
return StringConverter3GC.SetString(destBuffer, value, maxLength, option); // no remap needed
|
||||
|
||||
var expect = language == 1 ? GCRegion.NTSC_J : GCRegion.NTSC_U;
|
||||
// ensure glyphs match the transfer route
|
||||
var result = StringConverter3GC.SetString(destBuffer, value, maxLength, option);
|
||||
StringConverter3GC.RemapGlyphsBetweenRegions3GC(destBuffer[..result], expect, current, language);
|
||||
|
||||
@@ -2179,6 +2179,8 @@ private void PopulateFilteredDataSources(ITrainerInfo sav, bool force = false)
|
||||
var game = sav.Version;
|
||||
if (game <= 0)
|
||||
game = Entity.Context.GetSingleGameVersion();
|
||||
else if (game is GameVersion.COLO or GameVersion.XD)
|
||||
game = GameVersion.CXD;
|
||||
CheckMetLocationChange(game, sav.Context);
|
||||
SetIfDifferentCount(source.Items, CB_HeldItem, force);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user