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);
}
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.");

View file

@ -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);

View file

@ -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);
}