summaryrefslogtreecommitdiff
path: root/input.c
blob: 03f0a0e67bbd535ce5f3284fe19696208d684dc2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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;
}