* Ifdef away most of InputTask to make it compile.
[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 CInputTask::CInputTask()\r
31 {\r
32 #ifdef WIN32\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 #endif // WIN32\r
51 }\r
52 \r
53 CInputTask::~CInputTask()\r
54 {\r
55 #ifdef WIN32\r
56         if (dinkeyboard != NULL) \r
57         {\r
58                 dinkeyboard->Unacquire();\r
59                 dinkeyboard->Release();\r
60         }\r
61         if (din != NULL) din->Release();\r
62 #endif // WIN32\r
63 }\r
64 \r
65 bool CInputTask::Start()\r
66 {\r
67 #ifdef WIN32\r
68         dinkeyboard->Acquire();\r
69 #endif // WIN32\r
70 \r
71 \r
72 //      keys=SDL_GetKeyState(&keyCount);\r
73 //      oldKeys=new CMMDynamicBlob<unsigned char>(keyCount);\r
74 //      dX=dY=0;\r
75 //      SDL_PumpEvents(); SDL_PumpEvents();\r
76         return true;\r
77 }\r
78 \r
79 void CInputTask::Update()\r
80 {\r
81 #ifdef WIN32\r
82         dinkeyboard->Acquire();\r
83         memcpy(oldKeys, keys, 256*sizeof(BYTE));\r
84         dinkeyboard->GetDeviceState(256, (LPVOID)keys);\r
85 \r
86 #endif // WIN32\r
87 //      SDL_PumpEvents();\r
88 //      oldButtons=buttons;\r
89 //      buttons=SDL_GetRelativeMouseState(&dX,&dY);\r
90 //      memcpy((unsigned char*)(*oldKeys),keys,sizeof(unsigned char)*keyCount);\r
91 //      keys=SDL_GetKeyState(&keyCount);\r
92 }\r
93 \r
94 void CInputTask::Stop()\r
95 {\r
96         //keys=0;\r
97         //oldKeys=0;\r
98         memset(keys, 0, 256);\r
99         memset(oldKeys, 0, 256);\r
100 }\r