diff --git a/src/event_manager.c b/src/event_manager.c index e3c4d10..a4d1294 100644 --- a/src/event_manager.c +++ b/src/event_manager.c @@ -113,29 +113,32 @@ void handle_event() { ALLEGRO_EVENT evnt; al_wait_for_event(event_queue, &evnt); - switch(evnt.type) + do { - case ALLEGRO_EVENT_TIMER: - redraw = 1; - break; - case ALLEGRO_EVENT_DISPLAY_CLOSE: - run = 0; - break; - case ALLEGRO_EVENT_KEY_DOWN: - if(evnt.keyboard.keycode == ALLEGRO_KEY_H) - show_help = !show_help; - else if(evnt.keyboard.keycode == ALLEGRO_KEY_I) - show_info = !show_info; - else if(evnt.keyboard.keycode == ALLEGRO_KEY_Q || - evnt.keyboard.keycode == ALLEGRO_KEY_ESCAPE) + switch(evnt.type) + { + case ALLEGRO_EVENT_TIMER: + redraw = 1; + break; + case ALLEGRO_EVENT_DISPLAY_CLOSE: run = 0; - else - set_key(evnt.keyboard.keycode, 1); - break; - case ALLEGRO_EVENT_KEY_UP: - set_key(evnt.keyboard.keycode, 0); - break; - } + break; + case ALLEGRO_EVENT_KEY_DOWN: + if(evnt.keyboard.keycode == ALLEGRO_KEY_H) + show_help = !show_help; + else if(evnt.keyboard.keycode == ALLEGRO_KEY_I) + show_info = !show_info; + else if(evnt.keyboard.keycode == ALLEGRO_KEY_Q || + evnt.keyboard.keycode == ALLEGRO_KEY_ESCAPE) + run = 0; + else + set_key(evnt.keyboard.keycode, 1); + break; + case ALLEGRO_EVENT_KEY_UP: + set_key(evnt.keyboard.keycode, 0); + break; + } + } while(al_get_next_event(event_queue, &evnt)); } int key_is_down(int code) { diff --git a/src/main.c b/src/main.c index 6bd754e..40c3d32 100644 --- a/src/main.c +++ b/src/main.c @@ -38,6 +38,7 @@ const char *help = "P - pause/unpause the simulation\n" "I - show/hide simulation information\n" "H - show/hide this help information\n" + "F - toggle fullscreen\n" "Q/ESC - quit"; const char *info_format = @@ -107,6 +108,7 @@ int main() { show_info = 1; int paused = 0; int old_paused = 0; + int just_toggled_fullscreen = 0; while(run) { handle_event(); @@ -127,6 +129,23 @@ int main() { ship_update(&ship); } + if (key_is_down(KEY_FULLSCREEN) && !just_toggled_fullscreen) + { + if(al_get_display_flags(display) & ALLEGRO_FULLSCREEN_WINDOW) + { + al_set_display_flag(display, ALLEGRO_FULLSCREEN_WINDOW, 0); + } + else + { + al_set_display_flag(display, ALLEGRO_FULLSCREEN_WINDOW, 1); + } + just_toggled_fullscreen = 1; + } + else if (!key_is_down(KEY_FULLSCREEN) && just_toggled_fullscreen) + { + just_toggled_fullscreen = 0; + } + al_clear_to_color(al_map_rgb(0, 0, 0)); ship_draw(&ship); if(show_info)