e3363f6137fd0d791d33f76bc098587664135cf9
[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 #define DIRECTINPUT_VERSION 0x0800\r
14 #include <dinput.h>\r
15 \r
16 class CInputTask : public ITask  \r
17 {\r
18 public:\r
19         CInputTask();\r
20         virtual ~CInputTask();\r
21 \r
22         bool Start();\r
23         void Update();\r
24         void Stop();\r
25 \r
26         static BYTE keys[256], oldKeys[256];\r
27         //static CMMPointer<CMMDynamicBlob<unsigned char> > oldKeys;\r
28         //static int keyCount;\r
29         \r
30         static int dX,dY;\r
31         static unsigned int buttons;\r
32         static unsigned int oldButtons;\r
33 \r
34         static bool inline curKey(int index) { return (keys[index] & 0x80) != 0; }\r
35         static bool inline oldKey(int index) { return (oldKeys[index] & 0x80) != 0; }\r
36 \r
37         //some helper functions to make certain things easier\r
38         //static bool inline keyDown(int index)         { return ( curKey(index))&&(!oldKey(index)); }\r
39         static bool inline keyDown(int index)           { return ( curKey(index)); }\r
40         static bool inline keyStillDown(int index)      { return ( curKey(index))&&( oldKey(index)); }\r
41         static bool inline keyUp(int index)             { return (!curKey(index))&&( oldKey(index)); }\r
42         static bool inline keyStillUp(int index)        { return (!curKey(index))&&(!oldKey(index)); }\r
43 \r
44         //static bool inline curMouse(int button) { return (buttons&SDL_BUTTON(button))!=0; }\r
45         //static bool inline oldMouse(int button) { return (oldButtons&SDL_BUTTON(button))!=0; }\r
46 \r
47         //static bool inline mouseDown(int button)      { return ( curMouse(button))&&(!oldMouse(button)); }\r
48         //static bool inline mouseStillDown(int button) { return ( curMouse(button))&&( oldMouse(button)); }\r
49         //static bool inline mouseUp(int button)                { return (!curMouse(button))&&( oldMouse(button)); }\r
50         //static bool inline mouseStillUp(int button)   { return (!curMouse(button))&&(!oldMouse(button)); }\r
51 \r
52         AUTO_SIZE;\r
53 private:\r
54         LPDIRECTINPUT8 din;    // the pointer to our DirectInput interface\r
55         LPDIRECTINPUTDEVICE8 dinkeyboard;    // the pointer to the keyboard device\r
56 };\r
57 \r
58 #endif // !defined(AFX_KEYBOARDTASK_H__4953EF06_7C18_4433_B590_47E045E43576__INCLUDED_)\r