|
|
|
@ -38,8 +38,6 @@ struct draw_watcher draw_watch = {};
@@ -38,8 +38,6 @@ struct draw_watcher draw_watch = {};
|
|
|
|
|
struct textbox_info textboxes[1]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct ui_state gameui = {}; |
|
|
|
|
|
|
|
|
|
struct timespec last_tick; |
|
|
|
@ -1647,6 +1645,7 @@ GlobWorld create_world() {
@@ -1647,6 +1645,7 @@ GlobWorld create_world() {
|
|
|
|
|
void startgame(SDL_Renderer * ren) { |
|
|
|
|
get_input_map(); |
|
|
|
|
|
|
|
|
|
textboxes[TB_LEVEL_CHOOSER].id = TB_LEVEL_CHOOSER; |
|
|
|
|
textboxes[TB_LEVEL_CHOOSER].close_callback = new_level_tb_close_callback; |
|
|
|
|
|
|
|
|
|
debug_ren = ren; |
|
|
|
@ -1706,6 +1705,29 @@ void handle_input_event(SDL_Event event) {
@@ -1706,6 +1705,29 @@ void handle_input_event(SDL_Event event) {
|
|
|
|
|
static bool mouse_down = false; |
|
|
|
|
switch (event.type) { |
|
|
|
|
case SDL_KEYDOWN: |
|
|
|
|
|
|
|
|
|
if (gameui.currently_bound_textbox) { |
|
|
|
|
if (event.key.keysym.scancode == SDL_SCANCODE_BACKSPACE |
|
|
|
|
|| event.key.keysym.scancode == SDL_SCANCODE_DELETE) { |
|
|
|
|
delete_from_textbox(gameui.currently_bound_textbox); |
|
|
|
|
} else if (event.key.keysym.scancode == SDL_SCANCODE_RETURN |
|
|
|
|
|| event.key.keysym.scancode == SDL_SCANCODE_ESCAPE) {
|
|
|
|
|
if (gameui.currently_bound_textbox->close_callback) { |
|
|
|
|
gameui.currently_bound_textbox->close_callback( |
|
|
|
|
gameui.currently_bound_textbox, NULL); |
|
|
|
|
} |
|
|
|
|
gameui.currently_bound_textbox = NULL; |
|
|
|
|
} |
|
|
|
|
else if (event.key.keysym.sym >= 32
|
|
|
|
|
&& event.key.keysym.sym <= 126) { |
|
|
|
|
write_to_textbox(gameui.currently_bound_textbox,
|
|
|
|
|
(char)event.key.keysym.sym); |
|
|
|
|
} |
|
|
|
|
// dont do anything else when the textbox is bound;
|
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef DEBUGMODE |
|
|
|
|
if (sc == input_map.player_up) { |
|
|
|
|
walk_player(0, -1); |
|
|
|
@ -1725,6 +1747,12 @@ void handle_input_event(SDL_Event event) {
@@ -1725,6 +1747,12 @@ void handle_input_event(SDL_Event event) {
|
|
|
|
|
if (in_game)
|
|
|
|
|
game_paused = !game_paused; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (sc == input_map.goto_level) { |
|
|
|
|
gameui.currently_bound_textbox = textboxes + TB_LEVEL_CHOOSER; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
|
case SDL_KEYUP: |
|
|
|
|
if (event.key.keysym.scancode == input_map.player_rope) { |
|
|
|
@ -1745,30 +1773,6 @@ void handle_input_event(SDL_Event event) {
@@ -1745,30 +1773,6 @@ void handle_input_event(SDL_Event event) {
|
|
|
|
|
stop_pull_rope(); |
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (gameui.currently_bound_textbox) { |
|
|
|
|
if (event.key.keysym.scancode == SDL_SCANCODE_BACKSPACE |
|
|
|
|
|| event.key.keysym.scancode == SDL_SCANCODE_DELETE) { |
|
|
|
|
delete_from_textbox(gameui.currently_bound_textbox); |
|
|
|
|
} else if (event.key.keysym.scancode == SDL_SCANCODE_RETURN) {
|
|
|
|
|
if (gameui.currently_bound_textbox->close_callback) { |
|
|
|
|
gameui.currently_bound_textbox->close_callback( |
|
|
|
|
gameui.currently_bound_textbox, NULL); |
|
|
|
|
} |
|
|
|
|
gameui.currently_bound_textbox = NULL; |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
write_to_textbox(gameui.currently_bound_textbox,
|
|
|
|
|
(char)event.key.keysym.sym); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (sc == input_map.goto_level) { |
|
|
|
|
gameui.level_chooser = !gameui.level_chooser; |
|
|
|
|
if (gameui.level_chooser) { |
|
|
|
|
gameui.currently_bound_textbox = textboxes + TB_LEVEL_CHOOSER; |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
break; |
|
|
|
|
case SDL_MOUSEBUTTONDOWN: |
|
|
|
|
add_rope(event.button.x, event.button.y); |
|
|
|
|