mirror of
https://github.com/kwsch/PKHeX
synced 2025-02-16 13:28:35 +00:00
Fix sav clone metadata inclusion
Need to not include it when cloning saves into the sav constructor, need to mirror it in metadata instead.
This commit is contained in:
parent
21271c2931
commit
1dcda6d2e8
8 changed files with 18 additions and 7 deletions
|
@ -210,7 +210,7 @@ public sealed class SAV1 : SaveFile, ILangDeviantSave, IEventFlagArray, IEventWo
|
|||
}
|
||||
|
||||
// Configuration
|
||||
protected override SAV1 CloneInternal() => new(Write(), 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;
|
||||
|
|
|
@ -237,7 +237,7 @@ public sealed class SAV2 : SaveFile, ILangDeviantSave, IEventFlagArray, IEventWo
|
|||
}
|
||||
|
||||
// Configuration
|
||||
protected override SAV2 CloneInternal() => new(Write(), 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(Write()) { 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(Write()) { 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(Write()) { 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;
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ public sealed class SAV4BR : SaveFile, IBoxDetailName
|
|||
}
|
||||
|
||||
// Configuration
|
||||
protected override SAV4BR CloneInternal() => new(Write());
|
||||
protected override SAV4BR CloneInternal() => new(GetFinalData());
|
||||
|
||||
public readonly IReadOnlyList<string> SaveNames = new string[SAVE_COUNT];
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ public abstract class SaveFile : ITrainerInfo, IGameValueLimit, IGeneration, IVe
|
|||
public SaveFile Clone()
|
||||
{
|
||||
var sav = CloneInternal();
|
||||
sav.Metadata = Metadata with {SAV = sav};
|
||||
sav.Metadata = Metadata.CloneInternal(sav);
|
||||
return sav;
|
||||
}
|
||||
|
||||
|
|
|
@ -202,4 +202,15 @@ public sealed record SaveFileMetadata(SaveFile SAV)
|
|||
}
|
||||
return flags;
|
||||
}
|
||||
|
||||
internal SaveFileMetadata CloneInternal(SaveFile sav)
|
||||
{
|
||||
var clone = this with { SAV = sav };
|
||||
// Disassociate any mutable references from this object
|
||||
if (HasFooter)
|
||||
clone.Footer = [..Footer];
|
||||
if (HasHeader)
|
||||
clone.Header = [..Header];
|
||||
return clone;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue