5fd261d151838afb7fa26a202be31a679e9e0e68
[matthijs/ABM2.git] / ABM2 / Engine / InputTask.cpp
1 // InputTask.cpp: implementation of the CInputTask class.\r
2 //\r
3 //////////////////////////////////////////////////////////////////////\r
4 \r
5 #include "InputTask.h"\r
6 #include "../main.h"\r
7 \r
8 #ifdef WIN32\r
9 // include the DirectX Library files\r
10 #pragma comment (lib, "dinput.lib")\r
11 #pragma comment (lib, "dinput8.lib")\r
12 #pragma comment (lib, "dxguid.lib")\r
13 \r
14 #endif WIN32\r
15 \r
16 //////////////////////////////////////////////////////////////////////\r
17 // Construction/Destruction\r
18 //////////////////////////////////////////////////////////////////////\r
19 \r
20 //unsigned char *CInputTask::keys=0;\r
21 //CMMPointer<CMMDynamicBlob<unsigned char> > CInputTask::oldKeys=0;\r
22 //int CInputTask::keyCount=0;\r
23 BYTE CInputTask::keys[256];\r
24 BYTE CInputTask::oldKeys[256];\r
25 int CInputTask::dX=0;\r
26 int CInputTask::dY=0;\r
27 unsigned int CInputTask::buttons=0;\r
28 unsigned int CInputTask::oldButtons=0;\r
29 \r
30 #ifdef WIN32\r
31 CInputTask::CInputTask()\r
32 {\r
33         din = NULL;\r
34         dinkeyboard = NULL;\r
35         memset(keys, 0, 256);\r
36         memset(oldKeys, 0, 256);\r
37 \r
38         // create the DirectInput interface\r
39         DirectInput8Create(hInstance, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&din, NULL);\r
40 \r
41         assert(din != NULL);\r
42 \r
43         // create the keyboard device\r
44         din->CreateDevice(GUID_SysKeyboard, &dinkeyboard, NULL);\r
45 \r
46         dinkeyboard->SetDataFormat(&c_dfDIKeyboard); // set the data format to keyboard format\r
47 \r
48         // set the control you will have over the keyboard\r
49         dinkeyboard->SetCooperativeLevel(hWnd, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND);\r
50 }\r
51 \r
52 CInputTask::~CInputTask()\r
53 {\r
54         if (dinkeyboard != NULL) \r
55         {\r
56                 dinkeyboard->Unacquire();\r
57                 dinkeyboard->Release();\r
58         }\r
59         if (din != NULL) din->Release();\r
60 }\r
61 \r
62 bool CInputTask::Start()\r
63 {\r
64         dinkeyboard->Acquire();\r
65 \r
66 \r
67 //      keys=SDL_GetKeyState(&keyCount);\r
68 //      oldKeys=new CMMDynamicBlob<unsigned char>(keyCount);\r
69 //      dX=dY=0;\r
70 //      SDL_PumpEvents(); SDL_PumpEvents();\r
71         return true;\r
72 }\r
73 \r
74 void CInputTask::Update()\r
75 {\r
76         dinkeyboard->Acquire();\r
77         memcpy(oldKeys, keys, 256*sizeof(BYTE));\r
78         dinkeyboard->GetDeviceState(256, (LPVOID)keys);\r
79 \r
80 //      SDL_PumpEvents();\r
81 //      oldButtons=buttons;\r
82 //      buttons=SDL_GetRelativeMouseState(&dX,&dY);\r
83 //      memcpy((unsigned char*)(*oldKeys),keys,sizeof(unsigned char)*keyCount);\r
84 //      keys=SDL_GetKeyState(&keyCount);\r
85 }\r
86 \r
87 void CInputTask::Stop()\r
88 {\r
89         //keys=0;\r
90         //oldKeys=0;\r
91         memset(keys, 0, 256);\r
92         memset(oldKeys, 0, 256);\r
93 }\r
94 #endif // WIN32\r