using System; using PkmnLib.Plugin.Gen7.Libraries.Battling; using PkmnLib.Static.Libraries; namespace PkmnLib.Plugin.Gen7; public class Gen7PluginConfiguration : PluginConfiguration { public bool DamageCalculatorHasRandomness { get; set; } = true; } public class Gen7Plugin : Dynamic.ScriptHandling.Registry.Plugin, IResourceProvider { private readonly Gen7PluginConfiguration _configuration; public Gen7Plugin() { _configuration = new Gen7PluginConfiguration(); } /// public Gen7Plugin(PluginConfiguration configuration) : base(configuration) { _configuration = (Gen7PluginConfiguration)configuration; } /// public override string Name => "Gen7"; /// public override uint LoadOrder => 0; /// 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()); registry.RegisterCaptureLibrary(new Gen7CaptureLibrary()); } /// public LibrarySettings Settings => new() { MaxLevel = 100, ShinyRate = 4096, }; /// IResourceResult IResourceProvider.GetResource(ResourceFileType request) { return request switch { ResourceFileType.Types => new AssemblyResourceResult("PkmnLib.Plugin.Gen7.Data.Types.csv", typeof(Gen7Plugin).Assembly), ResourceFileType.Natures => new AssemblyResourceResult("PkmnLib.Plugin.Gen7.Data.Natures.csv", typeof(Gen7Plugin).Assembly), ResourceFileType.Moves => new AssemblyResourceResult("PkmnLib.Plugin.Gen7.Data.Moves.jsonc", typeof(Gen7Plugin).Assembly), ResourceFileType.Items => new AssemblyResourceResult("PkmnLib.Plugin.Gen7.Data.Items.json", typeof(Gen7Plugin).Assembly), ResourceFileType.Abilities => new AssemblyResourceResult("PkmnLib.Plugin.Gen7.Data.Abilities.json", typeof(Gen7Plugin).Assembly), ResourceFileType.GrowthRates => new AssemblyResourceResult("PkmnLib.Plugin.Gen7.Data.GrowthRates.json", typeof(Gen7Plugin).Assembly), ResourceFileType.Species => new AssemblyResourceResult("PkmnLib.Plugin.Gen7.Data.Pokemon.json", typeof(Gen7Plugin).Assembly), _ => throw new ArgumentOutOfRangeException(nameof(request), request, null), }; } }