e8b92c66c1f2e899023693e90ca259e5fd052cdd
[physics.git] / src / input / inputManager.cpp
1
2 #include "inputManager.h"
3 #include "../debug.h"
4
5 enum State
6 {
7     isR,
8     wasP,
9     isP,
10     wasR
11 };
12
13 static const int keySize = 323;
14 static State keyState[keySize];
15
16 void inputInit()
17 {
18     for(int i=0; i< keySize; i++)
19         keyState[i] = isR;
20 }
21
22 void inputUpdate()
23 {
24     SDL_Event event;
25
26     for(int i=0; i< keySize; i++)
27     {
28         if(keyState[i] == wasR)
29             keyState[i] = isR;
30         else if(keyState[i] == wasP)
31             keyState[i] = isP;
32     }
33
34     while(SDL_PollEvent(&event))
35     {
36         switch(event.type)
37         {
38         case SDL_KEYUP:
39             keyState[event.key.keysym.sym] = wasR;
40             break;
41         case SDL_KEYDOWN:
42             keyState[event.key.keysym.sym] = wasP;
43             break;
44         }
45     }
46 }
47
48 bool isPressed(Uint8 key)
49 {
50     return keyState[key] == isP || keyState[key] == wasP;
51 }
52 bool isReleased(Uint8 key)
53 {
54     return keyState[key] == isR || keyState[key] == wasR;
55 }
56
57 bool wasPressed(Uint8 key)
58 {
59     return keyState[key] == wasP;
60 }
61 bool wasReleased(Uint8 key)
62 {
63     return keyState[key] == wasR;
64 }