using System.Collections.Generic; namespace PKHeX.Core; /// <summary> /// Generation 5 <see cref="SaveFile"/> object for <see cref="GameVersion.BW"/>. /// </summary> /// <inheritdoc cref="SAV5" /> public sealed class SAV5BW : SAV5 { public SAV5BW() : base(SaveUtil.SIZE_G5RAW) { Blocks = new SaveBlockAccessor5BW(this); Initialize(); } public SAV5BW(byte[] data) : base(data) { Blocks = new SaveBlockAccessor5BW(this); Initialize(); } public override IPersonalTable Personal => PersonalTable.BW; public SaveBlockAccessor5BW Blocks { get; } protected override SaveFile CloneInternal() => new SAV5BW((byte[])Data.Clone()); public override int EventWorkCount => 0x13E; public override int EventFlagCount => 0xB60; protected override int EventWorkOffset => 0x20100; protected override int EventFlagOffset => EventWorkOffset + 0x27C; public override int MaxItemID => Legal.MaxItemID_5_BW; private void Initialize() { BattleBoxOffset = 0x20A00; CGearInfoOffset = 0x1C000; CGearDataOffset = 0x52000; EntreeForestOffset = 0x22C00; PokeDex = Blocks.Zukan.PokeDex; WondercardData = Blocks.Mystery.Offset; DaycareOffset = Blocks.Daycare.Offset; } public override IReadOnlyList<BlockInfo> AllBlocks => Blocks.BlockInfo; public override MyItem Items => Blocks.Items; public override Zukan5 Zukan => Blocks.Zukan; public override Misc5 Misc => Blocks.Misc; public override MysteryBlock5 Mystery => Blocks.Mystery; public override Daycare5 Daycare => Blocks.Daycare; public override BoxLayout5 BoxLayout => Blocks.BoxLayout; public override PlayerData5 PlayerData => Blocks.PlayerData; public override BattleSubway5 BattleSubway => Blocks.BattleSubway; public override Entralink5 Entralink => Blocks.Entralink; public override Musical5 Musical => Blocks.Musical; public override Encount5 Encount => Blocks.Encount; public override int Fused => int.MinValue; public override int GTS => 0x20500; }