aboutsummaryrefslogtreecommitdiff
path: root/engines/gargoyle/events.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/gargoyle/events.h')
-rw-r--r--engines/gargoyle/events.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/engines/gargoyle/events.h b/engines/gargoyle/events.h
index 1347200d4a..5406e3ccb6 100644
--- a/engines/gargoyle/events.h
+++ b/engines/gargoyle/events.h
@@ -24,6 +24,7 @@
#define GARGOYLE_EVENTS_H
#include "common/events.h"
+#include "graphics/surface.h"
#include "gargoyle/utils.h"
namespace Gargoyle {
@@ -93,6 +94,12 @@ enum Keycode {
keycode_MAXVAL = 28U
};
+enum CursorId {
+ CURSOR_NONE = 0,
+ CURSOR_ARROW = 1,
+ CURSOR_SELECTION = 2
+};
+
/**
* Event structure
*/
@@ -146,6 +153,9 @@ public:
* Events manager
*/
class Events {
+ struct Surface : public Graphics::Surface {
+ Common::Point _hotspot;
+ };
private:
EventQueue _eventsPolled; ///< User generated events
EventQueue _eventsLogged; ///< Custom events generated by game code
@@ -154,8 +164,15 @@ private:
uint32 _priorFrameTime; ///< Time of prior game frame
uint32 _frameCounter; ///< Frame counter
bool _redraw; ///< Screen needed redrawing
+ CursorId _cursorId; ///< Current cursor Id
+ Surface _cursors[3]; ///< Cursor pixel data
private:
/**
+ * Initialize the cursor graphics
+ */
+ void initializeCursors();
+
+ /**
* Checks for whether it's time for the next game frame
*/
void checkForNextFrameCounter();
@@ -203,6 +220,11 @@ public:
Events();
/**
+ * Destructor
+ */
+ ~Events();
+
+ /**
* Get any pending event
*/
void getEvent(event_t *event, bool polled);
@@ -231,6 +253,11 @@ public:
* Flags the screen for redrawing
*/
void redraw() { _redraw = true; }
+
+ /**
+ * Sets the current cursor
+ */
+ void setCursor(CursorId cursorId);
};
} // End of namespace Gargoyle