36 lines
1.3 KiB
C#
36 lines
1.3 KiB
C#
using PkmnLib.Dynamic.Models;
|
|
using PkmnLib.Static;
|
|
|
|
namespace PkmnLib.Dynamic.ScriptHandling;
|
|
|
|
public class ProxyScript : Script
|
|
{
|
|
public delegate void ChangeOffensiveStatValueEventHandler(IExecutingMove move, IPokemon target, byte hit,
|
|
uint defensiveStat, ImmutableStatisticSet<uint> targetStats, ref uint value);
|
|
|
|
private readonly List<(Script, ChangeOffensiveStatValueEventHandler)> _changeOffensiveStatValueEvents = new();
|
|
|
|
public void AddChangeOffensiveStatValueEvent(Script script, ChangeOffensiveStatValueEventHandler handler)
|
|
{
|
|
_changeOffensiveStatValueEvents.Add((script, handler));
|
|
script.OnRemoveEvent += OnRemoveScriptEvent;
|
|
}
|
|
|
|
private void OnRemoveScriptEvent(Script script)
|
|
{
|
|
_changeOffensiveStatValueEvents.RemoveAll(x => x.Item1 == script);
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public override void ChangeOffensiveStatValue(IExecutingMove move, IPokemon target, byte hit, uint defensiveStat,
|
|
ImmutableStatisticSet<uint> targetStats, Statistic stat, ref uint value)
|
|
{
|
|
foreach (var (script, handler) in _changeOffensiveStatValueEvents)
|
|
{
|
|
if (!script.IsSuppressed)
|
|
{
|
|
handler(move, target, hit, defensiveStat, targetStats, ref value);
|
|
}
|
|
}
|
|
}
|
|
} |