Move OnInitialize to interface
This commit is contained in:
		| @@ -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> | ||||
| @@ -848,4 +841,17 @@ public interface IScriptOnBeforeAnyHookInvoked | ||||
|     /// of scripts. This is useful for example to prevent certain effects from running. | ||||
|     /// </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); | ||||
| } | ||||
| @@ -34,7 +34,8 @@ public class ScriptResolver | ||||
|         } | ||||
|  | ||||
|         script = scriptCtor(); | ||||
|         script.OnInitialize(parameters); | ||||
|         if (script is IScriptOnInitialize scriptOnInitialize) | ||||
|             scriptOnInitialize.OnInitialize(parameters); | ||||
|  | ||||
|         return true; | ||||
|     } | ||||
|   | ||||
| @@ -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)); | ||||
|   | ||||
| @@ -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)); | ||||
|   | ||||
| @@ -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."); | ||||
|   | ||||
| @@ -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)); | ||||
|   | ||||
| @@ -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) | ||||
|         { | ||||
|   | ||||
| @@ -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) | ||||
|         { | ||||
|   | ||||
| @@ -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) | ||||
|         { | ||||
|   | ||||
| @@ -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) | ||||
|         { | ||||
|   | ||||
| @@ -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) | ||||
|         { | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
| @@ -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) | ||||
|         { | ||||
|   | ||||
| @@ -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) | ||||
|         { | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
| @@ -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'"); | ||||
|   | ||||
| @@ -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) | ||||
|         { | ||||
|   | ||||
| @@ -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."); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user