Add OnGamepadConnected and OnGamepadDisconnected events #51

Merged
cosmonaut merged 3 commits from gamepad_connect_event into main 2023-11-13 19:10:29 +00:00
1 changed files with 19 additions and 0 deletions

View File

@ -35,6 +35,22 @@ namespace MoonWorks.Input
/// </summary> /// </summary>
public VirtualButton AnyPressedButton { get; private set; } public VirtualButton AnyPressedButton { get; private set; }
public delegate void OnGamepadConnectedFunc(int slot);
/// <summary>
/// Called when a gamepad has been connected.
/// </summary>
/// <param name="slot">The slot where the connection occurred.</param>
public OnGamepadConnectedFunc OnGamepadConnected;
public delegate void OnGamepadDisconnectedFunc(int slot);
/// <summary>
/// Called when a gamepad has been disconnected.
/// </summary>
/// <param name="slot">The slot where the disconnection occurred.</param>
public OnGamepadDisconnectedFunc OnGamepadDisconnected;
internal Inputs() internal Inputs()
{ {
Keyboard = new Keyboard(); Keyboard = new Keyboard();
@ -126,7 +142,9 @@ namespace MoonWorks.Input
{ {
Gamepads[slot].Register(openResult); Gamepads[slot].Register(openResult);
Logger.LogInfo($"Gamepad added to slot {slot}!"); Logger.LogInfo($"Gamepad added to slot {slot}!");
OnGamepadConnected(slot);
} }
return; return;
} }
} }
@ -143,6 +161,7 @@ namespace MoonWorks.Input
SDL.SDL_GameControllerClose(Gamepads[slot].Handle); SDL.SDL_GameControllerClose(Gamepads[slot].Handle);
Gamepads[slot].Unregister(); Gamepads[slot].Unregister();
Logger.LogInfo($"Removing gamepad from slot {slot}!"); Logger.LogInfo($"Removing gamepad from slot {slot}!");
OnGamepadDisconnected(slot);
return; return;
} }
} }