41 lines
1.1 KiB
C#
41 lines
1.1 KiB
C#
using System.Runtime.CompilerServices;
|
|
|
|
namespace PkmnLib.Dynamic.ScriptHandling;
|
|
|
|
/// <summary>
|
|
/// Helper functions for script execution.
|
|
/// </summary>
|
|
public static class ScriptExecution
|
|
{
|
|
/// <summary>
|
|
/// Executes a hook on all scripts in a source.
|
|
/// </summary>
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static void RunScriptHook(this IScriptSource source, Action<Script> hook)
|
|
{
|
|
var iterator = source.GetScripts();
|
|
foreach (var container in iterator)
|
|
{
|
|
if (container.IsEmpty)
|
|
continue;
|
|
var script = container.Script;
|
|
if (script.IsSuppressed)
|
|
continue;
|
|
hook(script);
|
|
}
|
|
}
|
|
|
|
public static void RunScriptHook(this IReadOnlyList<IEnumerable<ScriptContainer>> source, Action<Script> hook)
|
|
{
|
|
foreach (var container in source.SelectMany(x => x))
|
|
{
|
|
if (container.IsEmpty)
|
|
continue;
|
|
var script = container.Script;
|
|
if (script.IsSuppressed)
|
|
continue;
|
|
hook(script);
|
|
}
|
|
}
|
|
|
|
} |