using PkmnLib.Dynamic.ScriptHandling.Registry;
using PkmnLib.Plugin.Gen7.Libraries;

namespace PkmnLib.Plugin.Gen7;

public class Gen7PluginConfiguration : PluginConfiguration
{
    public bool DamageCalculatorHasRandomness { get; set; } = true;
}

public class Gen7Plugin : Dynamic.ScriptHandling.Registry.Plugin
{
    private readonly Gen7PluginConfiguration _configuration;
    
    public Gen7Plugin() : base()
    {
        _configuration = new Gen7PluginConfiguration();
    }

    /// <inheritdoc />
    public Gen7Plugin(PluginConfiguration configuration) : base(configuration)
    {
        _configuration = (Gen7PluginConfiguration)configuration;
    }

    /// <inheritdoc />
    public override string Name => "Gen7";

    /// <inheritdoc />
    public override uint LoadOrder => 0;

    /// <inheritdoc />
    public override void Register(ScriptRegistry registry)
    {
        registry.RegisterAssemblyScripts(typeof(Gen7Plugin).Assembly);
        registry.RegisterBattleStatCalculator(new Gen7BattleStatCalculator());
        registry.RegisterDamageCalculator(new Gen7DamageCalculator(_configuration.DamageCalculatorHasRandomness));
        registry.RegisterMiscLibrary(new Gen7MiscLibrary());
    }
}