using System;
using System.ComponentModel;

namespace pkNX.Randomization;

[Serializable]
[TypeConverter(typeof(ExpandableObjectConverter))]
public class LearnSettings
{
    private const string General = nameof(General);
    private const string Misc = nameof(Misc);

    [Category(General), Description("Expands the learnset to the specified count.")]
    public bool Expand { get; set; } = true;

    [Category(General), Description("Count to expand the learnset to.")]
    public int ExpandTo { get; set; } = 25;

    [Category(General), Description("Evenly spreads learned moves out from level 1 to the specified end level.")]
    public bool Spread { get; set; } = true;

    [Category(General), Description("Level to end learning level up moves.")]
    public int SpreadTo { get; set; } = 75;

    [Category(Misc), Description("Reorders moves so that moves are learned with increasing power.")]
    public bool OrderByPower { get; set; } = true;

    [Category(Misc), Description("Requires the first move learned to be STAB.")]
    public bool STABFirst { get; set; } = true;

    [Category(Misc), Description("Requires 4 moves to be available at level 1.")]
    public bool Learn4Level1 { get; set; }
}
