mine2d/Mine2d/engine/EventService.cs

49 lines
1.5 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)
{
if (e.type == SDL_EventType.SDL_QUIT)
{
EventPublisher.Publish(EventType.Quit, e);
}
if (e.type == SDL_EventType.SDL_WINDOWEVENT && e.window.windowEvent == SDL_WindowEventID.SDL_WINDOWEVENT_RESIZED)
{
EventPublisher.Publish(EventType.WindowResize, e);
}
if (e.type == SDL_EventType.SDL_MOUSEMOTION)
{
EventPublisher.Publish(EventType.MouseMotion, e);
}
if (e.type == SDL_EventType.SDL_MOUSEBUTTONDOWN)
{
EventPublisher.Publish(EventType.MouseButtonDown, e);
}
if (e.type == SDL_EventType.SDL_MOUSEBUTTONUP)
{
EventPublisher.Publish(EventType.MouseButtonUp, e);
}
if (e.type == SDL_EventType.SDL_KEYDOWN)
{
EventPublisher.Publish(EventType.KeyDown, e);
}
if (e.type == SDL_EventType.SDL_KEYUP)
{
EventPublisher.Publish(EventType.KeyUp, e);
}
if (e.type == SDL_EventType.SDL_MOUSEWHEEL)
{
EventPublisher.Publish(EventType.MouseWheel, e);
}
}
EventPublisher.Publish(EventType.Tick, new SDL_Event());
}
}