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