From 37f879c297e3b16e834ae76fb9f1d9c3b593a3b6 Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak Date: Tue, 13 Mar 2012 12:52:57 +0100 Subject: [PATCH] little cleanup in menu handling code --- src/menu.c | 75 ++++++++++++++--------------------------------------- src/menu.h | 1 + src/pause.c | 11 +++----- 3 files changed, 24 insertions(+), 63 deletions(-) diff --git a/src/menu.c b/src/menu.c index e1f8a8e..6780bc8 100644 --- a/src/menu.c +++ b/src/menu.c @@ -235,6 +235,12 @@ void Menu_Stop(struct Game* game) { al_destroy_bitmap(game->menu.menu_fade_bitmap); } +void ChangeMenuState(struct Game *game, enum menustate_enum state) { + game->menu.menustate=state; + game->menu.selected=0; + PrintConsole(game, "menu state changed %d", state); +} + void Menu_Unload(struct Game *game) { if (!game->menu.loaded) return; if (game->gamestate==GAMESTATE_MENU) Menu_Stop(game); @@ -264,8 +270,7 @@ void Menu_Load(struct Game *game) { game->menu.cloud_position = 100; game->menu.cloud2_position = 100; - game->menu.menustate = MENUSTATE_MAIN; - game->menu.selected = 0; + ChangeMenuState(game,MENUSTATE_MAIN); al_play_sample_instance(game->menu.music); al_play_sample_instance(game->menu.rain_sound); @@ -310,9 +315,7 @@ int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { game->loadstate = GAMESTATE_INTRO; break; case 1: - game->menu.menustate=MENUSTATE_OPTIONS; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_OPTIONS); break; case 2: UnloadGameState(game); @@ -349,9 +352,7 @@ int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { al_set_mixer_gain(game->audio.voice, game->voice/10.0); break; case 3: - game->menu.menustate=MENUSTATE_OPTIONS; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_OPTIONS); break; } free(text); @@ -359,38 +360,16 @@ int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { case MENUSTATE_OPTIONS: switch (game->menu.selected) { case 0: - game->menu.menustate=MENUSTATE_CONTROLS; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_CONTROLS); break; case 1: - game->menu.menustate=MENUSTATE_VIDEO; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_VIDEO); break; case 2: -/* if ((game->music) && (game->fx)) { game->music=0; SetConfigOption("SuperDerpy", "music", "0"); - al_set_mixer_gain(game->audio.music, 0.0); - } - else if (game->fx) { game->music=1; game->fx=0; SetConfigOption("SuperDerpy", "music", "1"); SetConfigOption("SuperDerpy", "fx", "0"); - al_set_mixer_gain(game->audio.music, 1.0); - al_set_mixer_gain(game->audio.fx, 0.0); - } - else if (game->music) { game->music=0; SetConfigOption("SuperDerpy", "music", "0"); - al_set_mixer_gain(game->audio.music, 0.0); - } - else { game->music=1; game->fx=1; SetConfigOption("SuperDerpy", "music", "1"); SetConfigOption("SuperDerpy", "fx", "1"); - al_set_mixer_gain(game->audio.music, 1.0); - al_set_mixer_gain(game->audio.fx, 1.0); - }*/ - game->menu.menustate=MENUSTATE_AUDIO; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_AUDIO); break; case 3: - game->menu.menustate=MENUSTATE_MAIN; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_MAIN); break; default: break; @@ -411,9 +390,7 @@ int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { game->loadstate = GAMESTATE_MAP; break; case 2: - game->menu.menustate=MENUSTATE_OPTIONS; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_OPTIONS); break; case 3: return 1; @@ -424,9 +401,7 @@ int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { case MENUSTATE_CONTROLS: switch (game->menu.selected) { case 3: - game->menu.menustate=MENUSTATE_OPTIONS; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_OPTIONS); break; default: break; @@ -443,9 +418,7 @@ int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { break; case 3: if ((game->menu.options.fullscreen==game->fullscreen) && (game->menu.options.fps==game->fps) && (game->menu.options.width==game->width) && (game->menu.options.height==game->height)) { - game->menu.menustate=MENUSTATE_OPTIONS; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_OPTIONS); } else { PrintConsole(game, "video settings changed, restarting..."); game->restart = true; @@ -463,24 +436,16 @@ int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { } else if (ev->keyboard.keycode==ALLEGRO_KEY_ESCAPE) { switch (game->menu.menustate) { case MENUSTATE_OPTIONS: - game->menu.menustate=MENUSTATE_MAIN; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_MAIN); break; case MENUSTATE_VIDEO: - game->menu.menustate=MENUSTATE_OPTIONS; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_OPTIONS); break; case MENUSTATE_AUDIO: - game->menu.menustate=MENUSTATE_OPTIONS; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_OPTIONS); break; case MENUSTATE_CONTROLS: - game->menu.menustate=MENUSTATE_OPTIONS; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_OPTIONS); break; case MENUSTATE_PAUSE: PrintConsole(game,"Game resumed."); diff --git a/src/menu.h b/src/menu.h index f8e1ebd..dff2530 100644 --- a/src/menu.h +++ b/src/menu.h @@ -27,3 +27,4 @@ void Menu_Stop(struct Game *game); void Menu_Unload(struct Game *game); void Menu_Load(struct Game *game); int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev); +void ChangeMenuState(struct Game *game, enum menustate_enum state); diff --git a/src/pause.c b/src/pause.c index 5f9c30c..274db79 100644 --- a/src/pause.c +++ b/src/pause.c @@ -28,14 +28,10 @@ int Pause_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { if ((game->menu.menustate==MENUSTATE_OPTIONS) && ((ev->keyboard.keycode==ALLEGRO_KEY_ESCAPE) || ((ev->keyboard.keycode==ALLEGRO_KEY_ENTER) && (game->menu.selected==3)))) { al_play_sample_instance(game->menu.click); - game->menu.menustate=MENUSTATE_PAUSE; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_PAUSE); } else if ((game->menu.menustate==MENUSTATE_VIDEO) && ((ev->keyboard.keycode==ALLEGRO_KEY_ESCAPE) || ((ev->keyboard.keycode==ALLEGRO_KEY_ENTER) && (game->menu.selected==3)))) { al_play_sample_instance(game->menu.click); - game->menu.menustate=MENUSTATE_OPTIONS; - game->menu.selected=0; - PrintConsole(game, "menu state changed %d", game->menu.menustate); + ChangeMenuState(game,MENUSTATE_OPTIONS); if (game->menu.options.fullscreen!=game->fullscreen) { al_toggle_display_flag(game->display, ALLEGRO_FULLSCREEN_WINDOW, game->menu.options.fullscreen); al_clear_to_color(al_map_rgb(0,0,0)); @@ -90,8 +86,7 @@ void Pause_Load(struct Game* game) { al_draw_bitmap(game->pause.derpy, 0.47*al_get_display_width(game->display), al_get_display_height(game->display)*0.396, 0); al_set_target_bitmap(al_get_backbuffer(game->display)); al_destroy_bitmap(fade); - game->menu.selected=0; - game->menu.menustate = MENUSTATE_PAUSE; + ChangeMenuState(game,MENUSTATE_PAUSE); PrintConsole(game,"Game paused."); al_play_sample_instance(game->menu.click); }