31 lines
1.2 KiB
C#
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());
|
|
}
|
|
}
|