jtmm2/src/input.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;
}