normal mode, command mode

This commit is contained in:
Luka Jankovic 2025-07-02 01:16:19 +02:00
parent d41e801aeb
commit ecc8a1df95
10 changed files with 133 additions and 14 deletions

View file

@ -21,6 +21,7 @@
void kubo_window_init(struct kubo_context *context) {
SetConfigFlags(FLAG_WINDOW_RESIZABLE);
InitWindow(KUBO_WINDOW_WIDTH, KUBO_WINDOW_HEIGHT, "Kubo");
SetExitKey(0);
}
void kubo_window_cleanup(struct kubo_context *context) { CloseWindow(); }
@ -63,6 +64,8 @@ static void window_left_mouse(struct kubo_context *context) {
break;
case KUBO_CONTEXT_WALL_SELECT:
break;
default:
break;
}
}
@ -73,20 +76,28 @@ static void window_right_mouse(struct kubo_context *context) {
break;
case KUBO_CONTEXT_WALL_SELECT:
break;
default:
break;
}
}
static void window_key_input(struct kubo_context *context) {
window_char_input(context);
int key_code = GetKeyPressed();
if (!key_code) {
if (key_code == KEY_ESCAPE) {
kubo_context_set_state(context, KUBO_CONTEXT_NORMAL);
}
if (!key_code || context->state == KUBO_CONTEXT_COMMAND) {
return;
}
switch (key_code) {
case KEY_Q:
context->exit_pending = true;
break;
kubo_context_set_state(context, KUBO_CONTEXT_NORMAL);
case KEY_W:
kubo_context_set_state(context, KUBO_CONTEXT_WALL_NEW);
@ -115,6 +126,20 @@ static void window_key_input(struct kubo_context *context) {
}
}
static void window_char_input(struct kubo_context *context) {
int char_code;
do {
char_code = GetCharPressed();
if (char_code && context->state == KUBO_CONTEXT_COMMAND) {
kubo_char_arr_add(&context->command, char_code);
} else if (char_code == ':') {
kubo_context_set_state(context, KUBO_CONTEXT_COMMAND);
}
} while (char_code > 0);
}
static void new_wall_click(struct kubo_context *context) {
struct kubo_wall *current_wall = kubo_context_get_pending_wall(context);