X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=ABM2%2FEngine%2FInputTask.cpp;h=54e71cbca99d73ae76a637ffcfa38ac3ef57d8c8;hb=669bf7a6d3128f0933f6e783e3d0f3c3587d310c;hp=ad9a4f06aa94fb4215dd227717a3b528b4837ddb;hpb=0835c5605c80efd286ccb7eff92fffc07689f359;p=matthijs%2FABM2.git diff --git a/ABM2/Engine/InputTask.cpp b/ABM2/Engine/InputTask.cpp index ad9a4f0..54e71cb 100755 --- a/ABM2/Engine/InputTask.cpp +++ b/ABM2/Engine/InputTask.cpp @@ -5,11 +5,13 @@ #include "InputTask.h" #include "../main.h" +#ifdef WIN32 // include the DirectX Library files #pragma comment (lib, "dinput.lib") #pragma comment (lib, "dinput8.lib") #pragma comment (lib, "dxguid.lib") +#endif // WIN32 ////////////////////////////////////////////////////////////////////// // Construction/Destruction @@ -17,74 +19,46 @@ //unsigned char *CInputTask::keys=0; //CMMPointer > CInputTask::oldKeys=0; -//int CInputTask::keyCount=0; -BYTE CInputTask::keys[256]; -BYTE CInputTask::oldKeys[256]; +int CInputTask::keyCount=0; +BYTE *CInputTask::keys; +BYTE *CInputTask::oldKeys; int CInputTask::dX=0; int CInputTask::dY=0; unsigned int CInputTask::buttons=0; unsigned int CInputTask::oldButtons=0; -CInputTask::CInputTask() +CInputTask::CInputTask(CKernel* kernel) : ITask(kernel) { - din = NULL; - dinkeyboard = NULL; - memset(keys, 0, 256); - memset(oldKeys, 0, 256); - - // create the DirectInput interface - DirectInput8Create(hInstance, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&din, NULL); - - assert(din != NULL); - - // create the keyboard device - din->CreateDevice(GUID_SysKeyboard, &dinkeyboard, NULL); - - dinkeyboard->SetDataFormat(&c_dfDIKeyboard); // set the data format to keyboard format - - // set the control you will have over the keyboard - dinkeyboard->SetCooperativeLevel(hWnd, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND); + keys=0; + oldKeys=0; } CInputTask::~CInputTask() { - if (dinkeyboard != NULL) - { - dinkeyboard->Unacquire(); - dinkeyboard->Release(); - } - if (din != NULL) din->Release(); } bool CInputTask::Start() { - dinkeyboard->Acquire(); - - -// keys=SDL_GetKeyState(&keyCount); -// oldKeys=new CMMDynamicBlob(keyCount); -// dX=dY=0; -// SDL_PumpEvents(); SDL_PumpEvents(); + keys=SDL_GetKeyState(&keyCount); + oldKeys=new BYTE[keyCount]; + dX=dY=0; + SDL_PumpEvents(); SDL_PumpEvents(); return true; } void CInputTask::Update() { - dinkeyboard->Acquire(); - memcpy(oldKeys, keys, 256*sizeof(BYTE)); - dinkeyboard->GetDeviceState(256, (LPVOID)keys); - -// SDL_PumpEvents(); -// oldButtons=buttons; -// buttons=SDL_GetRelativeMouseState(&dX,&dY); -// memcpy((unsigned char*)(*oldKeys),keys,sizeof(unsigned char)*keyCount); -// keys=SDL_GetKeyState(&keyCount); + SDL_PumpEvents(); + oldButtons=buttons; + buttons=SDL_GetRelativeMouseState(&dX,&dY); + memcpy((unsigned char*)(*oldKeys),keys,sizeof(unsigned char)*keyCount); + keys=SDL_GetKeyState(&keyCount); } void CInputTask::Stop() { - //keys=0; - //oldKeys=0; - memset(keys, 0, 256); - memset(oldKeys, 0, 256); -} \ No newline at end of file + if (oldKeys) + delete oldKeys; + keys=0; + oldKeys=0; +}