Move OnInitialize to interface
This commit is contained in:
parent
d719ce03ea
commit
04cf585f5a
@ -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);
|
||||
}
|
@ -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.");
|
||||
|
Loading…
x
Reference in New Issue
Block a user