sdl input
This commit is contained in:
parent
d6a1983d07
commit
97af36cc8c
63
inc/lzy.h
63
inc/lzy.h
|
@ -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) {
|
||||
|
|
|
@ -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");
|
||||
|
|
Loading…
Reference in New Issue