diff --git a/src/f_finale.c b/src/f_finale.c index 7cde5767e..b7d534f4d 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -671,13 +671,42 @@ void F_IntroTicker(void) return; } - if (timetonext <= 0) + // check for skipping + const boolean disclaimerskippable = + ( + intro_scenenum == INTROSCENE_DISCLAIMER + && dc_state == DISCLAIMER_FINAL + && dc_tics >= (TICRATE/2) + (5*6) // bottom text needs to fade all the way in + ); + const boolean doskip = + ( + skippableallowed + && keypressed + && (timetonext > 10) + && ( + intro_scenenum >= INTROSCENE_KREW + || disclaimerskippable + ) + ); + + if (keypressed) + keypressed = false; + + if (doskip && disclaimerskippable) + { + dc_state = DISCLAIMER_OUT; + dc_tics = 0; + timetonext = 10; + } + else if (doskip || timetonext <= 0) { intro_scenenum++; - if (intro_scenenum == (M_GameTrulyStarted() - ? NUMINTROSCENES - : INTROSCENE_KREW) - ) + INT32 destscenenum = NUMINTROSCENES-1; + if (M_GameTrulyStarted() == false) + destscenenum = INTROSCENE_DISCLAIMER; + else if (doskip) + destscenenum = INTROSCENE_KREW; + if (intro_scenenum > destscenenum) { D_StartTitle(); // Custom built fade to skip the to-black @@ -687,10 +716,14 @@ void F_IntroTicker(void) //F_NewCutscene(introtext[intro_scenenum]); timetonext = introscenetime[intro_scenenum]; animtimer = stoptimer = 0; - if (intro_scenenum == INTROSCENE_DISCLAIMER) - wipegamestate = -1; - if (intro_scenenum == INTROSCENE_KREW) + if ( + doskip + || intro_scenenum == INTROSCENE_DISCLAIMER + || intro_scenenum == INTROSCENE_KREW + ) + { wipegamestate = -1; + } } if (intro_scenenum == INTROSCENE_KREW) @@ -711,10 +744,6 @@ void F_IntroTicker(void) F_WriteText(); - // check for skipping - if (keypressed) - keypressed = false; - if (animtimer > 0) animtimer--; } @@ -776,12 +805,6 @@ boolean F_IntroResponder(event_t *event) if (keypressed) return false; - if (intro_scenenum <= INTROSCENE_DISCLAIMER) - { - // do not allow skipping the disclaimer - return false; - } - keypressed = true; return true; } diff --git a/src/g_game.c b/src/g_game.c index e92d790c9..73edf9909 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -1399,7 +1399,7 @@ boolean G_Responder(event_t *ev) { if (F_IntroResponder(ev)) { - D_SetDeferredStartTitle(true); + //D_SetDeferredStartTitle(true); -- intro state tracked in f_finale directly return true; } }