using System;
using System.Collections.Generic;
using System.Diagnostics;
namespace PKHeX.Core
{
///
/// Storage for all the trainer has.
///
public class PoffinCase4
{
private readonly SAV4 SAV;
private readonly int Offset;
public Poffin4[] Poffins { get; set; }
private const int Count = 100;
public PoffinCase4(SAV4 sav)
{
SAV = sav;
if (SAV.HGSS)
throw new ArgumentException(nameof(SAV));
Offset = SAV.DP ? 0x5050 : 0x52E0;
Poffins = ReadPoffins(SAV, Offset);
}
public void Save() => WritePoffins(SAV, Offset, Poffins);
private static Poffin4[] ReadPoffins(SaveFile sav, int offset)
{
var Poffins = new Poffin4[Count];
for (int i = 0; i < Poffins.Length; i++)
Poffins[i] = new Poffin4(sav.Data, offset + (i * Poffin4.SIZE));
return Poffins;
}
private static void WritePoffins(SaveFile sav, int offset, IReadOnlyList poffins)
{
Debug.Assert(poffins.Count == Count);
for (int i = 0; i < poffins.Count; i++)
sav.SetData(poffins[i].Data, offset + (i * Poffin4.SIZE));
}
public void FillCase()
{
foreach (var p in Poffins)
p.SetAll();
}
public void DeleteAll()
{
foreach (var p in Poffins)
p.Delete();
}
}
}