sdl input

This commit is contained in:
KikooDX 2022-02-28 16:43:45 +01:00
parent d6a1983d07
commit 97af36cc8c
2 changed files with 46 additions and 21 deletions

View File

@ -15,7 +15,7 @@ void LZY_DrawSetColor(uint8_t r, uint8_t g, uint8_t b);
void LZY_DrawSetColorNone(void);
int LZY_DrawClear(void);
void LZY_CycleEvents(void);
int LZY_KeyDown(unsigned int scancode);
int LZY_KeyDown(unsigned int key);
int LZY_ShouldQuit(void);
void LZY_Log(const char *msg);
const char *LZY_GetError(void);
@ -23,20 +23,19 @@ const char *LZY_GetError(void);
#ifdef FXCG50
#include <gint/keycodes.h>
enum LZY_ScanCode {
LZY_SC_LEFT = KEY_LEFT,
LZY_SC_RIGHT = KEY_RIGHT,
LZY_SC_UP = KEY_UP,
LZY_SC_DOWN = KEY_DOWN,
LZY_SC_QUIT = KEY_EXIT,
LZYK_LEFT = KEY_LEFT,
LZYK_RIGHT = KEY_RIGHT,
LZYK_UP = KEY_UP,
LZYK_DOWN = KEY_DOWN,
};
#else /* end FXCG50, begin SDL2 */
#include <SDL.h>
enum LZY_ScanCode {
LZY_SC_LEFT = SDL_SCANCODE_LEFT,
LZY_SC_RIGHT = SDL_SCANCODE_RIGHT,
LZY_SC_UP = SDL_SCANCODE_UP,
LZY_SC_DOWN = SDL_SCANCODE_DOWN,
LZY_SC_QUIT = SDL_SCANCODE_ESCAPE,
LZYK_LEFT,
LZYK_RIGHT,
LZYK_UP,
LZYK_DOWN,
LZYK_COUNT,
};
#endif /* SDL2 */
#ifdef __cplusplus
@ -95,11 +94,11 @@ int LZY_DrawClear(void) {
void LZY_CycleEvents(void) {
clearevents();
should_quit = should_quit || keydown(LZY_SC_QUIT);
should_quit = should_quit || keydown(KEY_EXIT);
}
int LZY_KeyDown(unsigned int scancode) {
return keydown(scancode);
int LZY_KeyDown(unsigned int key) {
return keydown(key);
}
int LZY_ShouldQuit(void) {
@ -122,6 +121,7 @@ static const char *error = NULL;
static SDL_Window *window = NULL;
static SDL_Renderer *renderer = NULL;
static int should_quit = 0;
static int input[LZYK_COUNT] = {0};
int LZY_Init(const char *title) {
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
@ -190,6 +190,12 @@ int LZY_DrawClear(void) {
}
void LZY_CycleEvents(void) {
static const SDL_Scancode sc[LZYK_COUNT] = {
SDL_SCANCODE_LEFT,
SDL_SCANCODE_RIGHT,
SDL_SCANCODE_UP,
SDL_SCANCODE_DOWN,
};
SDL_Event e;
while (SDL_PollEvent(&e) != 0) {
@ -197,19 +203,34 @@ void LZY_CycleEvents(void) {
case SDL_QUIT:
should_quit = 1;
break;
case SDL_KEYDOWN:
break;
case SDL_KEYUP:
break;
case SDL_KEYDOWN: {
int i = LZYK_COUNT;
while (i-- > 0) {
if (sc[i] == e.key.keysym.scancode) {
input[i] = 1;
break;
}
}
} break;
case SDL_KEYUP: {
int i = LZYK_COUNT;
while (i-- > 0) {
if (sc[i] == e.key.keysym.scancode) {
input[i] = 0;
break;
}
}
} break;
default:
break;
}
}
}
int LZY_KeyDown(unsigned int scancode) {
LZY_Log("LZY_KeyDown not implemented");
return 0;
int LZY_KeyDown(unsigned int key) {
if (key >= LZYK_COUNT)
return 0;
return input[key];
}
int LZY_ShouldQuit(void) {

View File

@ -17,6 +17,10 @@ int main(void) {
do {
LZY_CycleEvents();
if (LZY_KeyDown(LZYK_LEFT))
LZY_Log("pressing left");
if (LZY_KeyDown(LZYK_RIGHT))
LZY_Log("pressing right");
} while (!LZY_ShouldQuit());
LZY_Log("cya");