75 lines
2.8 KiB
C#
75 lines
2.8 KiB
C#
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();
|
|
}
|
|
|
|
/// <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());
|
|
registry.RegisterCaptureLibrary(new Gen7CaptureLibrary());
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public LibrarySettings? Settings => new()
|
|
{
|
|
MaxLevel = 100,
|
|
ShinyRate = 4096,
|
|
};
|
|
|
|
/// <inheritdoc />
|
|
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),
|
|
};
|
|
}
|
|
} |