mine2d/Mine2d/engine/EventService.cs

31 lines
1.2 KiB
C#

using Mine2d.engine.system;
namespace Mine2d.engine;
public class EventService
{
private static readonly eventPublisher EventPublisher = new();
public static void PollEvents()
{
while (SDL_PollEvent(out var e) != 0)
{
var eventType = e.type switch
{
SDL_EventType.SDL_QUIT => EventType.Quit,
SDL_EventType.SDL_WINDOWEVENT when e.window.windowEvent == SDL_WindowEventID.SDL_WINDOWEVENT_RESIZED => EventType.WindowResize,
SDL_EventType.SDL_MOUSEMOTION => EventType.MouseMotion,
SDL_EventType.SDL_MOUSEBUTTONDOWN => EventType.MouseButtonDown,
SDL_EventType.SDL_MOUSEBUTTONUP => EventType.MouseButtonUp,
SDL_EventType.SDL_KEYDOWN => EventType.KeyDown,
SDL_EventType.SDL_KEYUP => EventType.KeyUp,
SDL_EventType.SDL_MOUSEWHEEL => EventType.MouseWheel,
SDL_EventType.SDL_TEXTINPUT => EventType.TextInput,
_ => EventType.Unhandled
};
EventPublisher.Publish(eventType, e);
}
EventPublisher.Publish(EventType.Tick, new SDL_Event());
}
}