X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=aa9fa6f4d27b3e07483d5a6cc55c414ecbe872d3;hb=f7704e2d22e9499efe6380e0c916c2bd4918e4be;hp=914661d10c39e3003ef0a80e0c07fc309106588c;hpb=06234ebe7668425f2bc05b3323fae921ac3fecff;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index 914661d1..aa9fa6f4 100644 --- a/src/game.c +++ b/src/game.c @@ -2037,8 +2037,11 @@ void InitGame() boolean emulate_bd = TRUE; /* unless non-BOULDERDASH elements found */ boolean emulate_sb = TRUE; /* unless non-SOKOBAN elements found */ boolean emulate_sp = TRUE; /* unless non-SUPAPLEX elements found */ + boolean do_fading = (game_status == GAME_MODE_MAIN); int i, j, x, y; + game_status = GAME_MODE_PLAYING; + InitGameEngine(); /* don't play tapes over network */ @@ -2629,6 +2632,11 @@ void InitGame() local_player->jy - MIDPOSY); } + StopAnimation(); + + if (do_fading) + FadeOutField(TITLE_SCREEN_FADE_DELAY, TITLE_SCREEN_POST_DELAY); + if (!game.restart_level) CloseDoor(DOOR_CLOSE_1); @@ -2650,10 +2658,16 @@ void InitGame() BlitBitmap(fieldbuffer, backbuffer, FX, FY, SXSIZE, SYSIZE, SX, SY); redraw_mask |= REDRAW_FROM_BACKBUFFER; + +#if 0 FadeToFront(); +#endif } /* !!! FIX THIS (END) !!! */ + if (do_fading) + FadeInField(TITLE_SCREEN_FADE_DELAY); + if (!game.restart_level) { /* copy default game door content to main double buffer */ @@ -3045,9 +3059,11 @@ void GameEnd() if (!local_player->LevelSolved_SaveScore) { + FadeOutField(TITLE_SCREEN_FADE_DELAY, TITLE_SCREEN_POST_DELAY); + game_status = GAME_MODE_MAIN; - DrawMainMenu(); + DrawMainMenuExt(TITLE_SCREEN_FADE_DELAY, REDRAW_FIELD); return; } @@ -3077,6 +3093,8 @@ void GameEnd() } else { + FadeOutField(TITLE_SCREEN_FADE_DELAY, TITLE_SCREEN_POST_DELAY); + game_status = GAME_MODE_MAIN; if (raise_level) @@ -3085,7 +3103,7 @@ void GameEnd() TapeErase(); } - DrawMainMenu(); + DrawMainMenuExt(TITLE_SCREEN_FADE_DELAY, REDRAW_FIELD); } local_player->LevelSolved_SaveScore = FALSE; @@ -9827,10 +9845,6 @@ void StartGameActions(boolean init_network_game, boolean record_tape, } #endif - StopAnimation(); - - game_status = GAME_MODE_PLAYING; - InitGame(); } @@ -13412,8 +13426,20 @@ void RequestQuitGame(boolean ask_if_really_quit) else #endif { - game_status = GAME_MODE_MAIN; - DrawMainMenu(); + if (!ask_if_really_quit || level_editor_test_game) + { + game_status = GAME_MODE_MAIN; + + DrawMainMenu(); + } + else + { + FadeOutField(TITLE_SCREEN_FADE_DELAY, TITLE_SCREEN_POST_DELAY); + + game_status = GAME_MODE_MAIN; + + DrawMainMenuExt(TITLE_SCREEN_FADE_DELAY, REDRAW_FIELD); + } } } else