diff --git a/src/f_finale.h b/src/f_finale.h index 024b183b247f5dfa3e497a52cf7afcf46abb8e6f..0002cb3cfa64e0b5ad523edc657ea96ef088276c 100644 --- a/src/f_finale.h +++ b/src/f_finale.h @@ -152,9 +152,10 @@ extern wipestyle_t wipestyle; typedef enum { - WSF_FADEOUT = 1, - WSF_FADEIN = 1<<1, - WSF_TOWHITE = 1<<2, + WSF_FADEOUT = 1, + WSF_FADEIN = 1<<1, + WSF_TOWHITE = 1<<2, + WSF_CROSSFADE = 1<<3, } wipestyleflags_t; extern wipestyleflags_t wipestyleflags; diff --git a/src/f_wipe.c b/src/f_wipe.c index 20651cb1dfe49dbce326ead4c0bf7c1aa53d5559..b88b39ef00986404cdc487f6454509c16b95dd54 100644 --- a/src/f_wipe.c +++ b/src/f_wipe.c @@ -95,7 +95,7 @@ boolean WipeStageTitle = false; INT32 lastwipetic = 0; wipestyle_t wipestyle = WIPESTYLE_NORMAL; -wipestyleflags_t wipestyleflags = 0; +wipestyleflags_t wipestyleflags = WSF_CROSSFADE; #ifndef NOWIPE static UINT8 *wipe_scr_start; //screen 3 @@ -404,7 +404,9 @@ void F_RunWipe(UINT8 wipetype, boolean drawMenu) // don't know where else to put this. // this any good? - if (gamestate == GS_LEVEL || gamestate == GS_TITLESCREEN) + if ((gamestate == GS_LEVEL || gamestate == GS_TITLESCREEN) + && (wipestyleflags & (WSF_FADEIN|WSF_FADEOUT)) // only if one of those wipestyleflags are actually set + && !(wipestyleflags & WSF_CROSSFADE)) // and if not crossfading wipestyle = WIPESTYLE_LEVEL; else wipestyle = WIPESTYLE_NORMAL; diff --git a/src/g_game.c b/src/g_game.c index 2fa70353edce5045b1dd8b91851be3efc75e73dd..963fc00f008cb2c77a6cc63d08de19b4c14921d7 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -1803,6 +1803,9 @@ void G_DoLoadLevel(boolean resetplayer) // void G_StartTitleCard(void) { + wipestyleflags |= WSF_FADEIN; + wipestyleflags &= ~WSF_FADEOUT; + // The title card has been disabled for this map. // Oh well. if (mapheaderinfo[gamemap-1]->levelflags & LF_NOTITLECARD) @@ -1819,8 +1822,6 @@ void G_StartTitleCard(void) // start the title card WipeStageTitle = (!titlemapinaction); - wipestyleflags |= WSF_FADEIN; - wipestyleflags &= ~WSF_FADEOUT; } // @@ -2855,6 +2856,7 @@ void G_DoReborn(INT32 playernum) // Do a wipe wipegamestate = -1; + wipestyleflags = WSF_CROSSFADE; if (camera.chase) P_ResetCamera(&players[displayplayer], &camera); diff --git a/src/p_setup.c b/src/p_setup.c index e87a088d8c45d743d5b88ae07c6c0c276df5bad6..b729177aab9d9442b6469fe2503cb1c714edb6b1 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -2725,7 +2725,7 @@ boolean P_SetupLevel(boolean skipprecip) S_FadeOutStopMusic(MUSICRATE/4); //FixedMul(FixedDiv(F_GetWipeLength(wipedefs[wipe_speclevel_towhite])*NEWTICRATERATIO, NEWTICRATE), MUSICRATE) F_WipeStartScreen(); - wipestyleflags |= WSF_FADEOUT|WSF_TOWHITE; + wipestyleflags |= (WSF_FADEOUT|WSF_TOWHITE); #ifdef HWRENDER // uh..........