Move OnInitialize to interface

This commit is contained in:
Deukhoofd 2025-06-28 10:31:23 +02:00
parent d719ce03ea
commit 04cf585f5a
Signed by: Deukhoofd
GPG Key ID: F63E044490819F6F
19 changed files with 49 additions and 44 deletions

View File

@ -54,13 +54,6 @@ public abstract class Script : IDeepCloneable
{
}
/// <summary>
/// This function is ran when this script starts being in effect.
/// </summary>
public virtual void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
}
/// <summary>
/// This function is ran when this script is added to a parent.
/// </summary>
@ -849,3 +842,16 @@ public interface IScriptOnBeforeAnyHookInvoked
/// </summary>
void OnBeforeAnyHookInvoked(ref List<ScriptCategory>? suppressedCategories);
}
/// <summary>
/// This interface is used to allow scripts to run when they are initialized. This allows for
/// setting up the script with parameters that are passed to it.
/// </summary>
public interface IScriptOnInitialize
{
/// <summary>
/// This function is ran when the script is initialized. This allows for setting up the script
/// with parameters that are passed to it.
/// </summary>
void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters);
}

View File

@ -34,7 +34,8 @@ public class ScriptResolver
}
script = scriptCtor();
script.OnInitialize(parameters);
if (script is IScriptOnInitialize scriptOnInitialize)
scriptOnInitialize.OnInitialize(parameters);
return true;
}

View File

@ -9,13 +9,13 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
/// <see href="https://bulbapedia.bulbagarden.net/wiki/Refrigerate_(Ability)">Bulbapedia - Refrigerate</see>
/// </summary>
[Script(ScriptCategory.Ability, "change_move_type")]
public class ChangeMoveTypeAbility : Script
public class ChangeMoveTypeAbility : Script, IScriptOnInitialize
{
private StringKey _fromType;
private StringKey _toType;
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters == null)
throw new ArgumentNullException(nameof(parameters));

View File

@ -11,13 +11,13 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
/// <see href="https://bulbapedia.bulbagarden.net/wiki/Swarm_(Ability)">Bulbapedia - Swarm</see>
/// </summary>
[Script(ScriptCategory.Ability, "power_up_type_at_low_health")]
public class PowerUpTypeAtLowHealth : Script
public class PowerUpTypeAtLowHealth : Script, IScriptOnInitialize
{
private StringKey _type;
private float _threshold;
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters == null)
throw new ArgumentNullException(nameof(parameters));

View File

@ -10,7 +10,7 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
/// <see href="https://bulbapedia.bulbagarden.net/wiki/Full_Metal_Body_(Ability)">Bulbapedia - Full Metal Body</see>
/// </summary>
[Script(ScriptCategory.Ability, "prevent_stat_lowering")]
public class PreventStatLowering : Script
public class PreventStatLowering : Script, IScriptOnInitialize
{
/// <summary>
/// The statistic that this ability prevents from being lowered.
@ -19,7 +19,7 @@ public class PreventStatLowering : Script
private Statistic? _statistic;
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters is null)
throw new ArgumentNullException(nameof(parameters), "Parameters cannot be null.");

View File

@ -9,13 +9,13 @@ namespace PkmnLib.Plugin.Gen7.Scripts.Abilities;
/// <see href="https://bulbapedia.bulbagarden.net/wiki/Sand_Rush_(Ability)">Bulbapedia - Sand Rush</see>
/// </summary>
[Script(ScriptCategory.Ability, "speed_modifier_in_weather")]
public class SpeedModifierInWeather : Script
public class SpeedModifierInWeather : Script, IScriptOnInitialize
{
private StringKey _weather;
private float _modifier;
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters is null)
throw new ArgumentNullException(nameof(parameters));

View File

@ -1,12 +1,12 @@
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "change_all_target_stats")]
public class ChangeAllTargetStats : Script
public class ChangeAllTargetStats : Script, IScriptOnInitialize
{
private sbyte _amount;
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters == null)
{

View File

@ -1,12 +1,12 @@
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "change_multiple_target_stat_boosts")]
public class ChangeMultipleTargetStatBoosts : Script
public class ChangeMultipleTargetStatBoosts : Script, IScriptOnInitialize
{
private Dictionary<Statistic, sbyte> _statBoosts = new();
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters == null)
{

View File

@ -1,12 +1,12 @@
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "change_multiple_user_stat_boosts")]
public class ChangeMultipleUserStatBoosts : Script
public class ChangeMultipleUserStatBoosts : Script, IScriptOnInitialize
{
private Dictionary<Statistic, sbyte> _statBoosts = new();
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters == null)
{

View File

@ -1,6 +1,6 @@
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
public abstract class ChangeTargetStats : Script
public abstract class ChangeTargetStats : Script, IScriptOnInitialize
{
private readonly Statistic _stat;
private sbyte _amount;
@ -11,7 +11,7 @@ public abstract class ChangeTargetStats : Script
}
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters == null)
{

View File

@ -1,6 +1,6 @@
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
public abstract class ChangeUserStats : Script
public abstract class ChangeUserStats : Script, IScriptOnInitialize
{
private readonly Statistic _stat;
private sbyte _amount;
@ -11,7 +11,7 @@ public abstract class ChangeUserStats : Script
}
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters == null)
{

View File

@ -1,14 +1,13 @@
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "drain")]
public class Drain : Script
public class Drain : Script, IScriptOnInitialize
{
public float DrainModifier { get; set; } = 0.5f;
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
base.OnInitialize(parameters);
if (parameters == null)
return;
DrainModifier = parameters.GetValueOrDefault("drain_modifier") as float? ?? DrainModifier;

View File

@ -1,12 +1,12 @@
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "flame_wheel")]
public class FlameWheel : Script
public class FlameWheel : Script, IScriptOnInitialize
{
private float _burnChance;
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters is null || !parameters.TryGetValue("burn_chance", out var burnChance) ||
burnChance is not float chance)

View File

@ -3,14 +3,13 @@ using PkmnLib.Plugin.Gen7.Scripts.Pokemon;
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "heal_each_end_of_turn")]
public class HealEachEndOfTurn : Script
public class HealEachEndOfTurn : Script, IScriptOnInitialize
{
private float _healPercentage;
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
base.OnInitialize(parameters);
if (parameters == null || !parameters.TryGetValue("percent", out var healPercentageObj) ||
healPercentageObj is not float healPercentage)
{

View File

@ -1,12 +1,12 @@
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "heal_percent")]
public class HealPercent : Script
public class HealPercent : Script, IScriptOnInitialize
{
private float _healPercent = 0.5f;
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters?.TryGetValue("healPercent", out var variable) == true && variable is float healPercent)
{

View File

@ -1,12 +1,12 @@
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "recoil")]
public class Recoil : Script
public class Recoil : Script, IScriptOnInitialize
{
private float _recoilPercentage;
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters == null)
return;

View File

@ -1,12 +1,12 @@
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "set_status")]
public class SetStatus : Script
public class SetStatus : Script, IScriptOnInitialize
{
private string? _status;
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters?.TryGetValue("status", out var s) != true)
throw new Exception("Missing required parameter 'status'");

View File

@ -1,13 +1,13 @@
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "set_weather")]
public class SetWeather : Script
public class SetWeather : Script, IScriptOnInitialize
{
private string _weather = null!;
private int _defaultTurns = 5;
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (!parameters!.TryGetValue("weather", out var weather) || weather is null)
{

View File

@ -1,12 +1,12 @@
namespace PkmnLib.Plugin.Gen7.Scripts.Moves;
[Script(ScriptCategory.Move, "static_damage")]
public class StaticDamage : Script
public class StaticDamage : Script, IScriptOnInitialize
{
private uint Damage { get; set; }
/// <inheritdoc />
public override void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
public void OnInitialize(IReadOnlyDictionary<StringKey, object?>? parameters)
{
if (parameters == null)
throw new Exception("Parameters cannot be null for StaticDamage script.");