diff options
Diffstat (limited to 'input.c')
-rw-r--r-- | input.c | 39 |
1 files changed, 39 insertions, 0 deletions
@@ -0,0 +1,39 @@ +#include "input.h" +#include "lzr.h" + +static const unsigned int keys[5] = {LZR_BUTTON_LEFT, LZR_BUTTON_RIGHT, + LZR_BUTTON_UP, LZR_BUTTON_DOWN, + LZR_BUTTON_O}; +static int states[5] = {0}; + +void input_update(void) +{ + int i = 5; + while (i-- > 0) + if (LZR_ButtonDown(keys[i])) + states[i] = + (states[i] == KS_UP) ? (KS_PRESSED) : (KS_DOWN); + else + states[i] = KS_UP; +} + +int input_up(unsigned int k) +{ + if (k >= 5) + return 0; + return states[k] == KS_UP; +} + +int input_down(unsigned int k) +{ + if (k >= 5) + return 0; + return states[k] == KS_DOWN || states[k] == KS_PRESSED; +} + +int input_pressed(unsigned int k) +{ + if (k >= 5) + return 0; + return states[k] == KS_PRESSED; +} |