aboutsummaryrefslogtreecommitdiff
path: root/sword2/driver/driver96.h
diff options
context:
space:
mode:
Diffstat (limited to 'sword2/driver/driver96.h')
-rw-r--r--sword2/driver/driver96.h54
1 files changed, 40 insertions, 14 deletions
diff --git a/sword2/driver/driver96.h b/sword2/driver/driver96.h
index fde513ba77..4ecf614da9 100644
--- a/sword2/driver/driver96.h
+++ b/sword2/driver/driver96.h
@@ -274,20 +274,6 @@ extern int32 SetLanguageVersion(uint8 version);
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
-// Mouse functions - from mouse.c
-//-----------------------------------------------------------------------------
-extern _mouseEvent *MouseEvent(void);
-uint8 CheckForMouseEvents(void);
-//-----------------------------------------------------------------------------
-
-//-----------------------------------------------------------------------------
-// Keyboard functions - from keyboard.c
-//-----------------------------------------------------------------------------
-extern bool KeyWaiting(void);
-extern int32 ReadKey(_keyboardEvent *ke);
-//-----------------------------------------------------------------------------
-
-//-----------------------------------------------------------------------------
// Misc functions - from misc.cpp
//-----------------------------------------------------------------------------
extern uint32 SVM_timeGetTime(void);
@@ -295,6 +281,46 @@ extern void SVM_SetFileAttributes(char *file, uint32 atrib);
extern void SVM_DeleteFile(char *file);
extern int32 SVM_GetVolumeInformation(char *cdPath, char *sCDName, uint32 maxPath, uint8 *, uint32 *dwMaxCompLength, uint32 *dwFSFlags, uint8 *, uint32 a);
+#define MAX_MOUSE_EVENTS 16
+
+// Key buffer size
+#define MAX_KEY_BUFFER 32
+
+class Input {
+ uint8 _mouseBacklog;
+ uint8 _mouseLogPos;
+ _mouseEvent _mouseLog[MAX_MOUSE_EVENTS];
+
+ void logMouseEvent(uint16 buttons);
+
+ // The number of key presses waiting to be processed.
+ uint8 _keyBacklog;
+
+ // Index of the next key to read from the buffer.
+ uint8 _keyLogPos;
+
+ // The keyboard buffer
+ _keyboardEvent _keyBuffer[MAX_KEY_BUFFER];
+
+ void writeKey(uint16 ascii, int keycode, int modifiers);
+
+public:
+ int16 _mouseX;
+ int16 _mouseY;
+
+ Input() :
+ _mouseBacklog(0), _mouseLogPos(0), _keyBacklog(0),
+ _keyLogPos(0) {};
+
+ void parseEvents(void);
+
+ _mouseEvent *mouseEvent(void);
+ bool checkForMouseEvents(void);
+
+ bool keyWaiting(void);
+ int32 readKey(_keyboardEvent *ev);
+};
+
} // End of namespace Sword2
#endif