PKHeX/PKHeX.Core/Saves/Substructures/Gen9/RentalTeamSet9.cs
Kurt 03182ebd3d Update 22.11.24
Adds support for Scarlet & Violet.

Co-Authored-By: SciresM <8676005+SciresM@users.noreply.github.com>
Co-Authored-By: Matt <17801814+sora10pls@users.noreply.github.com>
Co-Authored-By: Lusamine <30205550+Lusamine@users.noreply.github.com>
2022-11-24 17:42:17 -08:00

45 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
namespace PKHeX.Core;
/// <summary>
/// Save Block for Scarlet/Violet that stores a fixed amount of saved rental teams.
/// </summary>
public sealed class RentalTeamSet9 : IPokeGroup
{
public const int SIZE = Count * RentalTeam9.SIZE;
private const int Count = 5;
private readonly byte[] Data;
public RentalTeamSet9(byte[] data) => Data = data;
public RentalTeam9 GetRentalTeam(int index) => RentalTeam9.GetFrom(Data, index);
public void SetRentalTeam(int index, RentalTeam9 team) => team.WriteTo(Data, index);
public IEnumerable<PKM> Contents
{
get
{
for (int i = 0; i < Count; i++)
{
var team = GetRentalTeam(i);
foreach (var pk in team.Contents)
yield return pk;
}
}
}
public static bool IsRentalTeamSet(ReadOnlyMemory<byte> data)
{
if (data.Length != SIZE)
return false;
for (int i = 0; i < Count; i++)
{
var offset = i * RentalTeam9.SIZE;
var slice = data.Slice(offset, RentalTeam9.SIZE).ToArray();
if (!RentalTeam9.IsRentalTeam(slice))
return false;
}
return true;
}
}