using System; using SLSFramework.General; using UnityEngine; using UnityEngine.Events; namespace SLSFramework.General { public class PrioritizedAction : IPrioritized { private readonly Action action; public int Priority { get; set; } public PrioritizedAction(Action action, int priority = 0) { this.action = action; this.Priority = priority; } public void Invoke() { action.Invoke(); } } public class PrioritizedAction : IPrioritized { private readonly Action action; public int Priority { get; set; } public PrioritizedAction(Action action, int priority = 0) { this.action = action; this.Priority = priority; } public void Invoke(T arg) { action.Invoke(arg); } } public class PrioritizedAction : IPrioritized { private readonly Action action; public int Priority { get; set; } public PrioritizedAction(Action action, int priority = 0) { this.action = action; this.Priority = priority; } public void Invoke(T0 arg0, T1 arg1) { action.Invoke(arg0, arg1); } } public class PrioritizedAction : IPrioritized { private readonly Action action; public int Priority { get; set; } public PrioritizedAction(Action action, int priority = 0) { this.action = action; this.Priority = priority; } public void Invoke(T0 arg0, T1 arg1, T2 arg2) { action.Invoke(arg0, arg1, arg2); } } public class PrioritizedFunc : IPrioritized { private readonly Func func; public int Priority { get; set; } public PrioritizedFunc(Func func, int priority = 0) { this.func = func; this.Priority = priority; } public TR Invoke() { return func.Invoke(); } } public class PrioritizedFunc : IPrioritized { private readonly Func func; public int Priority { get; set; } public PrioritizedFunc(Func func, int priority = 0) { this.func = func; this.Priority = priority; } public TR Invoke(T arg) { return func.Invoke(arg); } } public class PrioritizedFunc : IPrioritized { private readonly Func func; public int Priority { get; set; } public PrioritizedFunc(Func func, int priority = 0) { this.func = func; this.Priority = priority; } public TR Invoke(T0 arg0, T1 arg1) { return func.Invoke(arg0, arg1); } } public class PrioritizedFunc : IPrioritized { private readonly Func func; public int Priority { get; set; } public PrioritizedFunc(Func func, int priority = 0) { this.func = func; this.Priority = priority; } public TR Invoke(T0 arg0, T1 arg1, T2 arg2) { return func.Invoke(arg0, arg1, arg2); } } }