X-Git-Url: http://gitweb.pgornicz.com/gitweb.cgi?a=blobdiff_plain;f=src%2Finput%2FinputManager.cpp;h=3d94d30f893242183391a3b2211c2cba45c5de81;hb=f32a9b7c8eab3536ad354f85ee65c41d5b5da006;hp=e8b92c66c1f2e899023693e90ca259e5fd052cdd;hpb=379cc454ab369431b3bdd2fe97cb2e6a1d68c26d;p=physics.git diff --git a/src/input/inputManager.cpp b/src/input/inputManager.cpp index e8b92c6..3d94d30 100644 --- a/src/input/inputManager.cpp +++ b/src/input/inputManager.cpp @@ -1,6 +1,30 @@ +/* + * Copyright (C) 2008 Patrik Gornicz, Gornicz_P (at) hotmail (dot) com. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include "inputManager.h" -#include "../debug.h" + +#include + +#include + +#include "config/keys.h" + + +/// ***** Private Variables ***** enum State { @@ -13,13 +37,23 @@ enum State static const int keySize = 323; static State keyState[keySize]; -void inputInit() +/// ***** Initializers/Cleaners ***** + +void input::init() { for(int i=0; i< keySize; i++) keyState[i] = isR; } +void input::clean() +{ + +} -void inputUpdate() +/// ***** Public Methods ***** + +const Uint32 eventMask = -1; // ALL events + +void input::update() { SDL_Event event; @@ -31,7 +65,7 @@ void inputUpdate() keyState[i] = isP; } - while(SDL_PollEvent(&event)) + while(0 < SDL_PeepEvents(&event, 1, SDL_GETEVENT, eventMask)) { switch(event.type) { @@ -41,24 +75,50 @@ void inputUpdate() case SDL_KEYDOWN: keyState[event.key.keysym.sym] = wasP; break; + case SDL_QUIT: + keyState[key::end] = wasR; + break; + default: + break; } } } -bool isPressed(Uint8 key) +Vector2 input::mousePosition() +{ + int x,y; + SDL_GetMouseState(&x, &y); + + return Vector2(x,y); +} + +bool input::mouseLeft() +{ + Uint8 state = SDL_GetMouseState(NULL, NULL); + + return state & SDL_BUTTON(1); +} +bool input::mouseRight() +{ + Uint8 state = SDL_GetMouseState(NULL, NULL); + + return state & SDL_BUTTON(3); +} + +bool input::isPressed(const SDLKey& key) { return keyState[key] == isP || keyState[key] == wasP; } -bool isReleased(Uint8 key) +bool input::isReleased(const SDLKey& key) { return keyState[key] == isR || keyState[key] == wasR; } -bool wasPressed(Uint8 key) +bool input::wasPressed(const SDLKey& key) { return keyState[key] == wasP; } -bool wasReleased(Uint8 key) +bool input::wasReleased(const SDLKey& key) { return keyState[key] == wasR; }