mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-09-29 11:00:08 -05:00
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:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user