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
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
if is_mouse_motion then return to_mouse_motion
if is_mouse_button_down then return to_mouse_button_down
if is_mouse_button_up then return to_mouse_button_up
+ if is_mouse_wheel then return to_mouse_wheel
if is_keydown then return to_keydown
if is_keyup then return to_keyup
return to_event_direct
# Require: `is_mouse_button_up`
fun to_mouse_button_up: SDLMouseButtonUpEvent `{ return self; `}
+ # Is this a mouse wheel event?
+ fun is_mouse_wheel: Bool `{ return self->type == SDL_MOUSEWHEEL; `}
+
+ # Get a reference to data at `self` as a `SDLMouseWheelEvent`
+ #
+ # Require: `is_mouse_wheel`
+ fun to_mouse_wheel: SDLMouseWheelEvent `{ return self; `}
+
# Is this a key presse event?
fun is_keydown: Bool `{ return self->type == SDL_KEYDOWN; `}
# SDL_WindowEvent window
# SDL_TextEditingEvent edit
# SDL_TextInputEvent text
- # SDL_MouseWheelEvent wheel
# SDL_JoyAxisEvent jaxis
# SDL_JoyBallEvent jball
# SDL_JoyHatEvent jhat;
super SDLMouseButtonEvent
end
+# Mouse wheel event
+extern class SDLMouseWheelEvent
+ super SDLEvent
+
+ # Horizontal scroll amount
+ fun x: Int `{ return self->wheel.x; `}
+
+ # Vertical scroll amount
+ fun y: Int `{ return self->wheel.y; `}
+end
+
# Keyboard button event
extern class SDLKeyboardEvent
super SDLEvent