0fea22b5de820387d7f91fbbfaca98a925dd653d
[matthijs/ABM2.git] / ABM2 / Engine / InputTask.h
1 // InputTask.h: interface for the CInputTask class.\r
2 //\r
3 //////////////////////////////////////////////////////////////////////\r
4 \r
5 #if !defined(AFX_KEYBOARDTASK_H__4953EF06_7C18_4433_B590_47E045E43576__INCLUDED_)\r
6 #define AFX_KEYBOARDTASK_H__4953EF06_7C18_4433_B590_47E045E43576__INCLUDED_\r
7 \r
8 #if _MSC_VER > 1000\r
9 #pragma once\r
10 #endif // _MSC_VER > 1000\r
11 \r
12 #include "engine.h"\r
13 #ifdef WIN32\r
14 #define DIRECTINPUT_VERSION 0x0800\r
15 #include <dinput.h>\r
16 #endif // WIN32\r
17 \r
18 class CInputTask : public ITask  \r
19 {\r
20 public:\r
21         CInputTask();\r
22         virtual ~CInputTask();\r
23 \r
24         bool Start();\r
25         void Update();\r
26         void Stop();\r
27 \r
28         static BYTE keys[256], oldKeys[256];\r
29         //static CMMPointer<CMMDynamicBlob<unsigned char> > oldKeys;\r
30         //static int keyCount;\r
31         \r
32         static int dX,dY;\r
33         static unsigned int buttons;\r
34         static unsigned int oldButtons;\r
35 \r
36         static bool inline curKey(int index) { return (keys[index] & 0x80) != 0; }\r
37         static bool inline oldKey(int index) { return (oldKeys[index] & 0x80) != 0; }\r
38 \r
39         //some helper functions to make certain things easier\r
40         //static bool inline keyDown(int index)         { return ( curKey(index))&&(!oldKey(index)); }\r
41         static bool inline keyDown(int index)           { return ( curKey(index)); }\r
42         static bool inline keyStillDown(int index)      { return ( curKey(index))&&( oldKey(index)); }\r
43         static bool inline keyUp(int index)             { return (!curKey(index))&&( oldKey(index)); }\r
44         static bool inline keyStillUp(int index)        { return (!curKey(index))&&(!oldKey(index)); }\r
45 \r
46         //static bool inline curMouse(int button) { return (buttons&SDL_BUTTON(button))!=0; }\r
47         //static bool inline oldMouse(int button) { return (oldButtons&SDL_BUTTON(button))!=0; }\r
48 \r
49         //static bool inline mouseDown(int button)      { return ( curMouse(button))&&(!oldMouse(button)); }\r
50         //static bool inline mouseStillDown(int button) { return ( curMouse(button))&&( oldMouse(button)); }\r
51         //static bool inline mouseUp(int button)                { return (!curMouse(button))&&( oldMouse(button)); }\r
52         //static bool inline mouseStillUp(int button)   { return (!curMouse(button))&&(!oldMouse(button)); }\r
53 \r
54         AUTO_SIZE;\r
55 #ifdef WIN32\r
56 private:\r
57         LPDIRECTINPUT8 din;    // the pointer to our DirectInput interface\r
58         LPDIRECTINPUTDEVICE8 dinkeyboard;    // the pointer to the keyboard device\r
59 #endif\r
60 };\r
61 \r
62 #endif // !defined(AFX_KEYBOARDTASK_H__4953EF06_7C18_4433_B590_47E045E43576__INCLUDED_)\r