From 86c9ed2ba98e05f21a952b58c49af5954207e006 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Sat, 31 May 2025 20:24:45 +0300 Subject: [PATCH] feat: parameterless Event type --- Engine.Core/Helpers/Event.cs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Engine.Core/Helpers/Event.cs b/Engine.Core/Helpers/Event.cs index 121b637..08a6e80 100644 --- a/Engine.Core/Helpers/Event.cs +++ b/Engine.Core/Helpers/Event.cs @@ -3,6 +3,27 @@ using System.Collections.Generic; namespace Syntriax.Engine.Core; +public class Event +{ + private readonly List listeners = new(8); + + public void AddListener(EventHandler listener) => listeners.Add(listener); + public void RemoveListener(EventHandler listener) => listeners.Remove(listener); + public void Clear() => listeners.Clear(); + public void Invoke() + { + for (int i = 0; i < listeners.Count; i++) + try { listeners[i].Invoke(); } + catch (Exception exception) + { + string methodCallRepresentation = $"{listeners[i].Method.DeclaringType?.FullName}.{listeners[i].Method.Name}()"; + Console.WriteLine($"Unexpected exception on invocation of method {methodCallRepresentation}:{Environment.NewLine}{exception.InnerException}"); + } + } + + public delegate void EventHandler(); +} + public class Event { private readonly List listeners = new(8);