diff --git a/Engine.Integration/Engine.Integration.MonoGame/Behaviours/KeyboardInputs.cs b/Engine.Integration/Engine.Integration.MonoGame/Behaviours/KeyboardInputs.cs index fbb8a77..5e333e6 100644 --- a/Engine.Integration/Engine.Integration.MonoGame/Behaviours/KeyboardInputs.cs +++ b/Engine.Integration/Engine.Integration.MonoGame/Behaviours/KeyboardInputs.cs @@ -10,11 +10,11 @@ namespace Engine.Integration.MonoGame; public class KeyboardInputs : Behaviour, IButtonInputs, IUpdate { - public Event, IButtonInputs.ButtonCallbackArguments> OnAnyButtonPressed { get; } = new(); - public Event, IButtonInputs.ButtonCallbackArguments> OnAnyButtonReleased { get; } = new(); + public IButtonInputs.InputEvent OnAnyButtonPressed { get; } = new(); + public IButtonInputs.InputEvent OnAnyButtonReleased { get; } = new(); - private readonly Dictionary, IButtonInputs.ButtonCallbackArguments>> OnPressed = new(256); - private readonly Dictionary, IButtonInputs.ButtonCallbackArguments>> OnReleased = new(256); + private readonly Dictionary.InputEvent> OnPressed = new(256); + private readonly Dictionary.InputEvent> OnReleased = new(256); private int cachePressedCurrentlyCount = 0; private readonly Keys[] cachePressedCurrently = new Keys[256]; @@ -22,9 +22,9 @@ public class KeyboardInputs : Behaviour, IButtonInputs, IUpdate private int cachePressedPreviouslyCount = 0; private readonly Keys[] cachePressedPreviously = new Keys[256]; - public void RegisterOnPress(Keys key, Event, IButtonInputs.ButtonCallbackArguments>.EventHandler callback) + public void RegisterOnPress(Keys key, IButtonInputs.InputEvent.EventHandler callback) { - if (!OnPressed.TryGetValue(key, out Event, IButtonInputs.ButtonCallbackArguments>? delegateCallback)) + if (!OnPressed.TryGetValue(key, out IButtonInputs.InputEvent? delegateCallback)) { delegateCallback = new(); OnPressed.Add(key, delegateCallback); @@ -33,15 +33,15 @@ public class KeyboardInputs : Behaviour, IButtonInputs, IUpdate delegateCallback.AddListener(callback); } - public void UnregisterOnPress(Keys key, Event, IButtonInputs.ButtonCallbackArguments>.EventHandler callback) + public void UnregisterOnPress(Keys key, IButtonInputs.InputEvent.EventHandler callback) { - if (OnPressed.TryGetValue(key, out Event, IButtonInputs.ButtonCallbackArguments>? delegateCallback)) + if (OnPressed.TryGetValue(key, out IButtonInputs.InputEvent? delegateCallback)) delegateCallback.RemoveListener(callback); } - public void RegisterOnRelease(Keys key, Event, IButtonInputs.ButtonCallbackArguments>.EventHandler callback) + public void RegisterOnRelease(Keys key, IButtonInputs.InputEvent.EventHandler callback) { - if (!OnReleased.TryGetValue(key, out Event, IButtonInputs.ButtonCallbackArguments>? delegateCallback)) + if (!OnReleased.TryGetValue(key, out IButtonInputs.InputEvent? delegateCallback)) { delegateCallback = new(); OnReleased.Add(key, delegateCallback); @@ -50,9 +50,9 @@ public class KeyboardInputs : Behaviour, IButtonInputs, IUpdate delegateCallback.AddListener(callback); } - public void UnregisterOnRelease(Keys key, Event, IButtonInputs.ButtonCallbackArguments>.EventHandler callback) + public void UnregisterOnRelease(Keys key, IButtonInputs.InputEvent.EventHandler callback) { - if (OnReleased.TryGetValue(key, out Event, IButtonInputs.ButtonCallbackArguments>? delegateCallback)) + if (OnReleased.TryGetValue(key, out IButtonInputs.InputEvent? delegateCallback)) delegateCallback.RemoveListener(callback); } @@ -69,7 +69,7 @@ public class KeyboardInputs : Behaviour, IButtonInputs, IUpdate if (WasPressed(currentlyPressedKey)) continue; - if (OnPressed.TryGetValue(currentlyPressedKey, out Event, IButtonInputs.ButtonCallbackArguments>? callback)) + if (OnPressed.TryGetValue(currentlyPressedKey, out IButtonInputs.InputEvent? callback)) callback?.Invoke(this, new(currentlyPressedKey)); OnAnyButtonPressed?.Invoke(this, new(currentlyPressedKey)); @@ -82,7 +82,7 @@ public class KeyboardInputs : Behaviour, IButtonInputs, IUpdate if (IsPressed(previouslyPressedKey)) continue; - if (OnReleased.TryGetValue(previouslyPressedKey, out Event, IButtonInputs.ButtonCallbackArguments>? callback)) + if (OnReleased.TryGetValue(previouslyPressedKey, out IButtonInputs.InputEvent? callback)) callback?.Invoke(this, new(previouslyPressedKey)); OnAnyButtonReleased?.Invoke(this, new(previouslyPressedKey)); diff --git a/Engine.Systems/Input/IButtonInputs.cs b/Engine.Systems/Input/IButtonInputs.cs index 3b54529..da41a93 100644 --- a/Engine.Systems/Input/IButtonInputs.cs +++ b/Engine.Systems/Input/IButtonInputs.cs @@ -4,15 +4,17 @@ namespace Engine.Systems.Input; public interface IButtonInputs : IHasStateEnable { - Event, ButtonCallbackArguments> OnAnyButtonPressed { get; } - Event, ButtonCallbackArguments> OnAnyButtonReleased { get; } + InputEvent OnAnyButtonPressed { get; } + InputEvent OnAnyButtonReleased { get; } - void RegisterOnPress(T button, Event, ButtonCallbackArguments>.EventHandler callback); - void UnregisterOnPress(T button, Event, ButtonCallbackArguments>.EventHandler callback); - void RegisterOnRelease(T button, Event, ButtonCallbackArguments>.EventHandler callback); - void UnregisterOnRelease(T button, Event, ButtonCallbackArguments>.EventHandler callback); + void RegisterOnPress(T button, InputEvent.EventHandler callback); + void UnregisterOnPress(T button, InputEvent.EventHandler callback); + void RegisterOnRelease(T button, InputEvent.EventHandler callback); + void UnregisterOnRelease(T button, InputEvent.EventHandler callback); bool IsPressed(T button); readonly record struct ButtonCallbackArguments(T Button); + + class InputEvent : Event, ButtonCallbackArguments>; }