-bool Input::isKeyDown(int k) {
- if(keyboardfrozen)return 0; // vraiment utile? à vérifier
- Uint8 *keystate = SDL_GetKeyState(NULL);
- if(k<SDLK_LAST)
- return keystate[k];
- else
- return SDL_GetMouseState(NULL,NULL)&SDL_BUTTON(k-SDLK_LAST);
+bool keyDown[SDLK_LAST + 6];
+bool keyPressed[SDLK_LAST + 6];
+
+void Input::Tick()
+{
+ SDL_PumpEvents();
+ Uint8 *keyState = SDL_GetKeyState(NULL);
+ for (int i = 0; i < SDLK_LAST; i++) {
+ keyPressed[i] = !keyDown[i] && keyState[i];
+ keyDown[i] = keyState[i];
+ }
+ Uint8 mb = SDL_GetMouseState(NULL, NULL);
+ for (int i = 1; i < 6; i++) {
+ keyPressed[SDLK_LAST + i] = !keyDown[SDLK_LAST + i] && (mb & SDL_BUTTON(i));
+ keyDown[SDLK_LAST + i] = (mb & SDL_BUTTON(i));
+ }
+}
+
+bool Input::isKeyDown(int k)
+{
+ if (keyboardfrozen || k >= SDLK_LAST + 6) // really useful? check that.
+ return false;
+ return keyDown[k];