forked from kdx/jtmm2-old
49 lines
904 B
C
49 lines
904 B
C
#include <gint/keyboard.h>
|
|
#include <gint/display.h>
|
|
|
|
#include "input.h"
|
|
|
|
void input_step(Input *input)
|
|
{
|
|
/* read all inputs */
|
|
clearevents();
|
|
/* for each key, update it's state */
|
|
for (int i = 0; i < KEYS_COUNT; ++i)
|
|
{
|
|
uint8_t *state = &input->states[i];
|
|
uint8_t *key = &input->keys[i];
|
|
int pressed = keydown(*key);
|
|
if (pressed)
|
|
{
|
|
*state = (input_is_down(*input, *key) ? S_DOWN : S_PRESSED);
|
|
}
|
|
else
|
|
{
|
|
*state = (!input_is_down(*input, *key) ? S_UP : S_RELEASED);
|
|
}
|
|
}
|
|
}
|
|
|
|
void input_draw(Input *input)
|
|
{
|
|
for (int i = 0; i < KEYS_COUNT; ++i)
|
|
{
|
|
dprint(0, i * 10, C_BLACK, "%d", input->states[i]);
|
|
}
|
|
}
|
|
|
|
int input_is_pressed(Input input, uint8_t key)
|
|
{
|
|
return input.states[key] == S_PRESSED;
|
|
}
|
|
|
|
int input_is_down(Input input, uint8_t key)
|
|
{
|
|
return input.states[key] <= S_DOWN;
|
|
}
|
|
|
|
int input_is_released(Input input, uint8_t key)
|
|
{
|
|
return input.states[key] == S_RELEASED;
|
|
}
|