little cleanup in menu handling code

This commit is contained in:
Sebastian Krzyszkowiak 2012-03-13 12:52:57 +01:00
parent 13aa555481
commit 37f879c297
3 changed files with 24 additions and 63 deletions

View file

@ -235,6 +235,12 @@ void Menu_Stop(struct Game* game) {
al_destroy_bitmap(game->menu.menu_fade_bitmap); 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) { void Menu_Unload(struct Game *game) {
if (!game->menu.loaded) return; if (!game->menu.loaded) return;
if (game->gamestate==GAMESTATE_MENU) Menu_Stop(game); 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.cloud_position = 100;
game->menu.cloud2_position = 100; game->menu.cloud2_position = 100;
game->menu.menustate = MENUSTATE_MAIN; ChangeMenuState(game,MENUSTATE_MAIN);
game->menu.selected = 0;
al_play_sample_instance(game->menu.music); al_play_sample_instance(game->menu.music);
al_play_sample_instance(game->menu.rain_sound); 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; game->loadstate = GAMESTATE_INTRO;
break; break;
case 1: case 1:
game->menu.menustate=MENUSTATE_OPTIONS; ChangeMenuState(game,MENUSTATE_OPTIONS);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
break; break;
case 2: case 2:
UnloadGameState(game); 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); al_set_mixer_gain(game->audio.voice, game->voice/10.0);
break; break;
case 3: case 3:
game->menu.menustate=MENUSTATE_OPTIONS; ChangeMenuState(game,MENUSTATE_OPTIONS);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
break; break;
} }
free(text); free(text);
@ -359,38 +360,16 @@ int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
case MENUSTATE_OPTIONS: case MENUSTATE_OPTIONS:
switch (game->menu.selected) { switch (game->menu.selected) {
case 0: case 0:
game->menu.menustate=MENUSTATE_CONTROLS; ChangeMenuState(game,MENUSTATE_CONTROLS);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
break; break;
case 1: case 1:
game->menu.menustate=MENUSTATE_VIDEO; ChangeMenuState(game,MENUSTATE_VIDEO);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
break; break;
case 2: case 2:
/* if ((game->music) && (game->fx)) { game->music=0; SetConfigOption("SuperDerpy", "music", "0"); ChangeMenuState(game,MENUSTATE_AUDIO);
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);
break; break;
case 3: case 3:
game->menu.menustate=MENUSTATE_MAIN; ChangeMenuState(game,MENUSTATE_MAIN);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
break; break;
default: default:
break; break;
@ -411,9 +390,7 @@ int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
game->loadstate = GAMESTATE_MAP; game->loadstate = GAMESTATE_MAP;
break; break;
case 2: case 2:
game->menu.menustate=MENUSTATE_OPTIONS; ChangeMenuState(game,MENUSTATE_OPTIONS);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
break; break;
case 3: case 3:
return 1; return 1;
@ -424,9 +401,7 @@ int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
case MENUSTATE_CONTROLS: case MENUSTATE_CONTROLS:
switch (game->menu.selected) { switch (game->menu.selected) {
case 3: case 3:
game->menu.menustate=MENUSTATE_OPTIONS; ChangeMenuState(game,MENUSTATE_OPTIONS);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
break; break;
default: default:
break; break;
@ -443,9 +418,7 @@ int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
break; break;
case 3: 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)) { 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; ChangeMenuState(game,MENUSTATE_OPTIONS);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
} else { } else {
PrintConsole(game, "video settings changed, restarting..."); PrintConsole(game, "video settings changed, restarting...");
game->restart = true; game->restart = true;
@ -463,24 +436,16 @@ int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
} else if (ev->keyboard.keycode==ALLEGRO_KEY_ESCAPE) { } else if (ev->keyboard.keycode==ALLEGRO_KEY_ESCAPE) {
switch (game->menu.menustate) { switch (game->menu.menustate) {
case MENUSTATE_OPTIONS: case MENUSTATE_OPTIONS:
game->menu.menustate=MENUSTATE_MAIN; ChangeMenuState(game,MENUSTATE_MAIN);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
break; break;
case MENUSTATE_VIDEO: case MENUSTATE_VIDEO:
game->menu.menustate=MENUSTATE_OPTIONS; ChangeMenuState(game,MENUSTATE_OPTIONS);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
break; break;
case MENUSTATE_AUDIO: case MENUSTATE_AUDIO:
game->menu.menustate=MENUSTATE_OPTIONS; ChangeMenuState(game,MENUSTATE_OPTIONS);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
break; break;
case MENUSTATE_CONTROLS: case MENUSTATE_CONTROLS:
game->menu.menustate=MENUSTATE_OPTIONS; ChangeMenuState(game,MENUSTATE_OPTIONS);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
break; break;
case MENUSTATE_PAUSE: case MENUSTATE_PAUSE:
PrintConsole(game,"Game resumed."); PrintConsole(game,"Game resumed.");

View file

@ -27,3 +27,4 @@ void Menu_Stop(struct Game *game);
void Menu_Unload(struct Game *game); void Menu_Unload(struct Game *game);
void Menu_Load(struct Game *game); void Menu_Load(struct Game *game);
int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev); int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev);
void ChangeMenuState(struct Game *game, enum menustate_enum state);

View file

@ -28,14 +28,10 @@
int Pause_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { 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)))) { 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); al_play_sample_instance(game->menu.click);
game->menu.menustate=MENUSTATE_PAUSE; ChangeMenuState(game,MENUSTATE_PAUSE);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
} else if ((game->menu.menustate==MENUSTATE_VIDEO) && ((ev->keyboard.keycode==ALLEGRO_KEY_ESCAPE) || ((ev->keyboard.keycode==ALLEGRO_KEY_ENTER) && (game->menu.selected==3)))) { } 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); al_play_sample_instance(game->menu.click);
game->menu.menustate=MENUSTATE_OPTIONS; ChangeMenuState(game,MENUSTATE_OPTIONS);
game->menu.selected=0;
PrintConsole(game, "menu state changed %d", game->menu.menustate);
if (game->menu.options.fullscreen!=game->fullscreen) { if (game->menu.options.fullscreen!=game->fullscreen) {
al_toggle_display_flag(game->display, ALLEGRO_FULLSCREEN_WINDOW, game->menu.options.fullscreen); al_toggle_display_flag(game->display, ALLEGRO_FULLSCREEN_WINDOW, game->menu.options.fullscreen);
al_clear_to_color(al_map_rgb(0,0,0)); 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_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_set_target_bitmap(al_get_backbuffer(game->display));
al_destroy_bitmap(fade); al_destroy_bitmap(fade);
game->menu.selected=0; ChangeMenuState(game,MENUSTATE_PAUSE);
game->menu.menustate = MENUSTATE_PAUSE;
PrintConsole(game,"Game paused."); PrintConsole(game,"Game paused.");
al_play_sample_instance(game->menu.click); al_play_sample_instance(game->menu.click);
} }