aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKikooDX <kikoodx@paranoici.org>2022-02-28 16:43:45 +0100
committerKikooDX <kikoodx@paranoici.org>2022-02-28 16:43:45 +0100
commit97af36cc8cc5697527476c7a6f2e2a7bf39b0bbc (patch)
treed663498a5b2cdbceb16461e413b6c6ea940e2403
parentd6a1983d077b5ca0334e9bda72a508526a444831 (diff)
downloadlzy-97af36cc8cc5697527476c7a6f2e2a7bf39b0bbc.tar.gz
sdl input
-rw-r--r--inc/lzy.h63
-rw-r--r--src/main.c4
2 files changed, 46 insertions, 21 deletions
diff --git a/inc/lzy.h b/inc/lzy.h
index cd5f475..f2a522b 100644
--- a/inc/lzy.h
+++ b/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) {
diff --git a/src/main.c b/src/main.c
index 7b200a8..23b7cc5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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");