namespace pkNX.Structures;

public abstract class TrainerData
{
    public abstract int SIZE { get; }
    protected byte[] Data;

    public abstract int Class { get; set; }
    public abstract BattleMode Mode { get; set; }
    public abstract int NumPokemon { get; set; }
    public abstract int Item1 { get; set; }
    public abstract int Item2 { get; set; }
    public abstract int Item3 { get; set; }
    public abstract int Item4 { get; set; }

    public abstract uint AI { get; set; }
    public abstract bool Heal { get; set; }
    public abstract int Money { get; set; }
    public abstract int Gift { get; set; }

    // derived
    public bool HasAllyTrainer => (AI & 8) != 0;

    public byte[] Write() => Data;
    protected TrainerData(byte[] trData) => Data = trData;
}
