71 lines
1.4 KiB
C
71 lines
1.4 KiB
C
#include "input.h"
|
|
|
|
/* Initializes input. */
|
|
void
|
|
input_init(Input* self)
|
|
{
|
|
memset(self, '\0', sizeof(Input));
|
|
}
|
|
|
|
/* Updates input struct. */
|
|
void
|
|
input_update(Input* self)
|
|
{
|
|
memcpy(&self->previous, &self->current, sizeof(bool) * INPUT_COUNT);
|
|
memset(&self->current, '\0', sizeof(bool) * INPUT_COUNT);
|
|
|
|
keyboard_update(&self->keyboard);
|
|
mouse_update(&self->mouse);
|
|
event_update(&self->event);
|
|
|
|
for (s32 i = 0; i < INPUT_COUNT; i++)
|
|
{
|
|
KeyboardInputEntry keyboardEntry;
|
|
MouseInputEntry mouseEntry;
|
|
|
|
keyboardEntry = INPUT_KEYBOARD_ENTRIES[i];
|
|
mouseEntry = INPUT_MOUSE_ENTRIES[i];
|
|
|
|
for (s32 j = 0; j < (s32)keyboardEntry.count; j++)
|
|
{
|
|
KeyboardKeyType keyboardKey;
|
|
|
|
keyboardKey = keyboardEntry.types[j];
|
|
|
|
if (self->keyboard.current[keyboardKey])
|
|
self->current[i] = true;
|
|
}
|
|
|
|
for (s32 j = 0; j < (s32)mouseEntry.count; j++)
|
|
{
|
|
MouseButtonType mouseButton;
|
|
|
|
mouseButton = mouseEntry.types[j];
|
|
|
|
if (self->mouse.current[mouseButton])
|
|
self->current[i] = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Is the given key pressed? */
|
|
bool
|
|
input_press(Input* self, InputType type)
|
|
{
|
|
return (self->current[type] && !self->previous[type]);
|
|
}
|
|
|
|
/* Is the given key held? */
|
|
bool
|
|
input_held(Input* self, InputType type)
|
|
{
|
|
return (self->current[type] && self->previous[type]);
|
|
}
|
|
|
|
/* Is the given key released? */
|
|
bool
|
|
input_release(Input* self, InputType type)
|
|
{
|
|
return (!self->current[type] && self->previous[type]);
|
|
}
|