X-Git-Url: http://nitlanguage.org diff --git a/lib/gamnit/gamnit_linux.nit b/lib/gamnit/gamnit_linux.nit index fe6cdac..7dd853a 100644 --- a/lib/gamnit/gamnit_linux.nit +++ b/lib/gamnit/gamnit_linux.nit @@ -18,6 +18,7 @@ module gamnit_linux import sdl2::events intrude import gamnit +intrude import display_linux redef class App private var sdl_event_buffer = new SDLEventBuffer.malloc @@ -33,11 +34,30 @@ redef class App # Convert to an SDL event with data var sdl_event = sdl_event_buffer.to_event + if sdl_event isa SDLWindowEvent and sdl_event.is_resized then + display.width = sdl_event.data1 + display.height = sdl_event.data2 + display.aspect_ratio = sdl_event.data1.to_f / sdl_event.data2.to_f + on_resize display + end + # Convert to `mnit::inputs` conforming objects var gamnit_event = sdl_event.to_gamnit_event(sdl_event_buffer) accept_event gamnit_event end end + + redef fun on_create + do + super + create_display + create_gamnit + create_scene + end +end + +redef class GamnitDisplay + redef var aspect_ratio = super is lazy end # --- @@ -56,6 +76,10 @@ redef class SDLMouseEvent redef fun to_gamnit_event(buffer) do return new GamnitPointerEvent(buffer, self) end +redef class SDLMouseWheelEvent + redef fun to_gamnit_event(buffer) do return new GamnitMouseWheelEvent(buffer, self) +end + redef class SDLKeyboardEvent redef fun to_gamnit_event(buffer) do return new GamnitKeyEvent(buffer, self) end @@ -126,6 +150,19 @@ class GamnitPointerEvent end end +# Event on mouse wheel input +class GamnitMouseWheelEvent + super GamnitInputEvent + + redef type NATIVE: SDLMouseWheelEvent + + # Horizontal scroll amount + fun x: Float do return native.x.to_f + + # Vertical scroll amount + fun y: Float do return native.y.to_f +end + # SDL2 event not handled by gamnit class GamnitOtherEvent super GamnitInputEvent