normal mode, command mode
This commit is contained in:
parent
d41e801aeb
commit
ecc8a1df95
10 changed files with 133 additions and 14 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue