using System; using System.ComponentModel; using System.IO; using PkmnLib.Plugin.Gen7.Libraries; 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, }; /// Stream? IResourceProvider.GetResource(ResourceFileType request) { return request switch { ResourceFileType.Types => typeof(Gen7Plugin).Assembly.GetManifestResourceStream( "PkmnLib.Plugin.Gen7.Data.Types.csv"), ResourceFileType.Natures => typeof(Gen7Plugin).Assembly.GetManifestResourceStream( "PkmnLib.Plugin.Gen7.Data.Natures.csv"), ResourceFileType.Moves => typeof(Gen7Plugin).Assembly.GetManifestResourceStream( "PkmnLib.Plugin.Gen7.Data.Moves.jsonc"), ResourceFileType.Items => typeof(Gen7Plugin).Assembly.GetManifestResourceStream( "PkmnLib.Plugin.Gen7.Data.Items.json"), ResourceFileType.Abilities => typeof(Gen7Plugin).Assembly.GetManifestResourceStream( "PkmnLib.Plugin.Gen7.Data.Abilities.json"), ResourceFileType.GrowthRates => typeof(Gen7Plugin).Assembly.GetManifestResourceStream( "PkmnLib.Plugin.Gen7.Data.GrowthRates.json"), ResourceFileType.Species => typeof(Gen7Plugin).Assembly.GetManifestResourceStream( "PkmnLib.Plugin.Gen7.Data.Pokemon.json"), _ => throw new ArgumentOutOfRangeException(nameof(request), request, null), }; } }