2013-01-10 17:21:47 -04:00
|
|
|
#ifndef _SFO_EVENTS_H
|
|
|
|
#define _SFO_EVENTS_H
|
2013-01-08 06:19:05 -04:00
|
|
|
|
2015-01-31 23:27:34 +01:00
|
|
|
#include <SDL_events.h>
|
|
|
|
#include <SDL_types.h>
|
2022-02-21 19:49:00 +00:00
|
|
|
#include <SDL_version.h>
|
2013-01-08 06:19:05 -04:00
|
|
|
|
|
|
|
////////////
|
|
|
|
// Events //
|
|
|
|
////////////
|
|
|
|
|
2015-05-13 16:50:47 +02:00
|
|
|
namespace SDLUtil
|
|
|
|
{
|
2013-01-08 06:19:05 -04:00
|
|
|
|
|
|
|
/** Extended mouse event struct where we treat the wheel like an axis, like everyone expects */
|
2013-01-10 17:21:47 -04:00
|
|
|
struct MouseMotionEvent : SDL_MouseMotionEvent
|
|
|
|
{
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2013-01-10 17:21:47 -04:00
|
|
|
Sint32 zrel;
|
|
|
|
Sint32 z;
|
2013-01-08 06:19:05 -04:00
|
|
|
};
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2022-02-21 19:49:00 +00:00
|
|
|
struct TouchEvent
|
|
|
|
{
|
|
|
|
int mDevice;
|
|
|
|
int mFinger;
|
|
|
|
float mX;
|
|
|
|
float mY;
|
|
|
|
float mPressure;
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2022-02-21 19:49:00 +00:00
|
|
|
#if SDL_VERSION_ATLEAST(2, 0, 14)
|
|
|
|
explicit TouchEvent(const SDL_ControllerTouchpadEvent& arg)
|
|
|
|
: mDevice(arg.touchpad)
|
|
|
|
, mFinger(arg.finger)
|
|
|
|
, mX(arg.x)
|
|
|
|
, mY(arg.y)
|
|
|
|
, mPressure(arg.pressure)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
};
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2013-01-08 06:19:05 -04:00
|
|
|
///////////////
|
|
|
|
// Listeners //
|
|
|
|
///////////////
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2013-01-10 17:21:47 -04:00
|
|
|
class MouseListener
|
2013-01-08 06:19:05 -04:00
|
|
|
{
|
|
|
|
public:
|
2013-01-10 17:21:47 -04:00
|
|
|
virtual ~MouseListener() {}
|
2014-02-13 15:08:40 +01:00
|
|
|
virtual void mouseMoved(const MouseMotionEvent& arg) = 0;
|
|
|
|
virtual void mousePressed(const SDL_MouseButtonEvent& arg, Uint8 id) = 0;
|
|
|
|
virtual void mouseReleased(const SDL_MouseButtonEvent& arg, Uint8 id) = 0;
|
2019-10-30 15:22:24 +04:00
|
|
|
virtual void mouseWheelMoved(const SDL_MouseWheelEvent& arg) = 0;
|
2013-01-08 06:19:05 -04:00
|
|
|
};
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2020-03-14 22:24:36 +04:00
|
|
|
class SensorListener
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual ~SensorListener() {}
|
|
|
|
virtual void sensorUpdated(const SDL_SensorEvent& arg) = 0;
|
|
|
|
virtual void displayOrientationChanged() = 0;
|
|
|
|
};
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2013-01-10 17:21:47 -04:00
|
|
|
class KeyListener
|
2013-01-08 06:19:05 -04:00
|
|
|
{
|
|
|
|
public:
|
2013-01-10 17:21:47 -04:00
|
|
|
virtual ~KeyListener() {}
|
2013-06-16 19:43:59 +02:00
|
|
|
virtual void textInput(const SDL_TextInputEvent& arg) {}
|
2014-02-13 15:08:40 +01:00
|
|
|
virtual void keyPressed(const SDL_KeyboardEvent& arg) = 0;
|
|
|
|
virtual void keyReleased(const SDL_KeyboardEvent& arg) = 0;
|
2013-01-08 06:19:05 -04:00
|
|
|
};
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2014-12-08 21:57:32 -06:00
|
|
|
class ControllerListener
|
2013-01-08 06:19:05 -04:00
|
|
|
{
|
|
|
|
public:
|
2014-12-08 21:57:32 -06:00
|
|
|
virtual ~ControllerListener() {}
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2022-02-21 19:49:00 +00:00
|
|
|
virtual void buttonPressed(int deviceID, const SDL_ControllerButtonEvent& evt) = 0;
|
2015-01-19 15:36:15 -06:00
|
|
|
virtual void buttonReleased(int deviceID, const SDL_ControllerButtonEvent& evt) = 0;
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2015-01-19 15:36:15 -06:00
|
|
|
virtual void axisMoved(int deviceID, const SDL_ControllerAxisEvent& arg) = 0;
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2015-01-19 15:36:15 -06:00
|
|
|
virtual void controllerAdded(int deviceID, const SDL_ControllerDeviceEvent& arg) = 0;
|
|
|
|
virtual void controllerRemoved(const SDL_ControllerDeviceEvent& arg) = 0;
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2022-02-21 19:49:00 +00:00
|
|
|
virtual void touchpadMoved(int deviceId, const TouchEvent& arg) = 0;
|
|
|
|
virtual void touchpadPressed(int deviceId, const TouchEvent& arg) = 0;
|
|
|
|
virtual void touchpadReleased(int deviceId, const TouchEvent& arg) = 0;
|
2013-01-08 06:19:05 -04:00
|
|
|
};
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2013-01-10 17:21:47 -04:00
|
|
|
class WindowListener
|
2013-01-09 06:10:05 -04:00
|
|
|
{
|
|
|
|
public:
|
2013-01-10 17:21:47 -04:00
|
|
|
virtual ~WindowListener() {}
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2013-01-09 06:10:05 -04:00
|
|
|
/** @remarks The window's visibility changed */
|
2015-01-31 23:27:34 +01:00
|
|
|
virtual void windowVisibilityChange(bool visible) {}
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2013-11-05 03:02:28 +01:00
|
|
|
virtual void windowClosed() {}
|
2022-09-22 21:26:05 +03:00
|
|
|
|
2013-07-29 02:32:08 +02:00
|
|
|
virtual void windowResized(int x, int y) {}
|
2013-01-09 06:10:05 -04:00
|
|
|
};
|
|
|
|
|
2013-01-08 06:19:05 -04:00
|
|
|
}
|
2013-01-10 17:21:47 -04:00
|
|
|
|
2013-01-08 06:19:05 -04:00
|
|
|
#endif
|