Fix cloning of gen1-3 saves in subeditors

Clone'd saves no longer retain same byte[] refs as original

evident in GUI editors and canceled changes somehow being saved
(gen3 isn't required, because it's unpacked into the blocks, but just be consistent)
This commit is contained in:
Kurt
2024-12-16 19:37:03 -06:00
parent e83ae026d6
commit 013cf4cf93
5 changed files with 13 additions and 5 deletions

View File

@@ -210,7 +210,7 @@ private int GetBoxRawDataOffset(int box)
}
// Configuration
protected override SAV1 CloneInternal() => new(GetFinalData(), Version) { Language = Language };
protected override SAV1 CloneInternal() => new(GetFinalData()[..], Version) { Language = Language };
protected override int SIZE_STORED => Japanese ? PokeCrypto.SIZE_1JLIST : PokeCrypto.SIZE_1ULIST;
protected override int SIZE_PARTY => SIZE_STORED;
@@ -571,6 +571,14 @@ public bool[] EventSpawnFlags
}
}
public HallOfFameReader1 HallOfFame => new(Data.AsMemory(0x0598, HallOfFameReader1.SIZE), Japanese);
public byte HallOfFameCount
{
get => Data[Offsets.HallOfFameCount];
set => Data[Offsets.HallOfFameCount] = value;
}
public override string GetString(ReadOnlySpan<byte> data)
=> StringConverter1.GetString(data, Japanese);
public override int LoadString(ReadOnlySpan<byte> data, Span<char> destBuffer)

View File

@@ -237,7 +237,7 @@ protected override byte[] GetFinalData()
}
// Configuration
protected override SAV2 CloneInternal() => new(GetFinalData(), Version) { Language = Language };
protected override SAV2 CloneInternal() => new(GetFinalData()[..], Version) { Language = Language };
protected override int SIZE_STORED => Japanese ? PokeCrypto.SIZE_2JLIST : PokeCrypto.SIZE_2ULIST;
protected override int SIZE_PARTY => SIZE_STORED;

View File

@@ -11,7 +11,7 @@ namespace PKHeX.Core;
public sealed class SAV3E : SAV3, IGen3Hoenn, IGen3Joyful, IGen3Wonder, IDaycareRandomState<uint>
{
// Configuration
protected override SAV3E CloneInternal() => new(GetFinalData()) { Language = Language };
protected override SAV3E CloneInternal() => new(GetFinalData()[..]) { Language = Language };
public override GameVersion Version { get => GameVersion.E; set { } }
public override PersonalTable3 Personal => PersonalTable.E;

View File

@@ -10,7 +10,7 @@ namespace PKHeX.Core;
public sealed class SAV3FRLG : SAV3, IGen3Joyful, IGen3Wonder, IDaycareRandomState<ushort>
{
// Configuration
protected override SAV3FRLG CloneInternal() => new(GetFinalData()) { Language = Language };
protected override SAV3FRLG CloneInternal() => new(GetFinalData()[..]) { Language = Language };
public override GameVersion Version { get; set; } = GameVersion.FR; // allow mutation
private PersonalTable3 _personal = PersonalTable.FR;
public override PersonalTable3 Personal => _personal;

View File

@@ -11,7 +11,7 @@ namespace PKHeX.Core;
public sealed class SAV3RS : SAV3, IGen3Hoenn, IDaycareRandomState<ushort>
{
// Configuration
protected override SAV3RS CloneInternal() => new(GetFinalData()) { Language = Language };
protected override SAV3RS CloneInternal() => new(GetFinalData()[..]) { Language = Language };
public override GameVersion Version { get; set; } = GameVersion.RS; // allow mutation
public override PersonalTable3 Personal => PersonalTable.RS;