From 9319014d8d5d80420dbcc926c8dfa349f5fc9e9d Mon Sep 17 00:00:00 2001
From: Jaime Passos <lazymyuutsu@gmail.com>
Date: Tue, 24 Dec 2019 16:22:25 -0300
Subject: [PATCH] Title card fixes.

---
 src/g_game.c   | 19 ++++++++++++++++++-
 src/g_game.h   |  1 +
 src/st_stuff.c |  9 +++++++++
 3 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/src/g_game.c b/src/g_game.c
index 91e788e1c7..32d69b301b 100644
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -1895,7 +1895,7 @@ void G_StartTitleCard(void)
 
 	// The title card has been disabled for this map.
 	// Oh well.
-	if ((mapheaderinfo[gamemap-1]->levelflags & LF_NOTITLECARD) || (gametyperules & GTR_NOTITLECARD))
+	if (!G_IsTitleCardAvailable())
 	{
 		WipeStageTitle = false;
 		return;
@@ -1938,6 +1938,23 @@ void G_PreLevelTitleCard(void)
 	}
 }
 
+//
+// Returns true if the current level has a title card.
+//
+boolean G_IsTitleCardAvailable(void)
+{
+	// The current level header explicitly disabled the title card.
+	if (mapheaderinfo[gamemap-1]->levelflags & LF_NOTITLECARD)
+		return false;
+
+	// The current gametype doesn't have a title card.
+	if (gametyperules & GTR_NOTITLECARD)
+		return false;
+
+	// The title card is available.
+	return true;
+}
+
 INT32 pausedelay = 0;
 boolean pausebreakkey = false;
 static INT32 camtoggledelay, camtoggledelay2 = 0;
diff --git a/src/g_game.h b/src/g_game.h
index 4e577f51a4..238dd19642 100644
--- a/src/g_game.h
+++ b/src/g_game.h
@@ -143,6 +143,7 @@ void G_DeferedInitNew(boolean pultmode, const char *mapname, INT32 pickedchar,
 void G_DoLoadLevel(boolean resetplayer);
 void G_StartTitleCard(void);
 void G_PreLevelTitleCard(void);
+boolean G_IsTitleCardAvailable(void);
 void G_DeferedPlayDemo(const char *demo);
 
 // Can be called by the startup code or M_Responder, calls P_SetupLevel.
diff --git a/src/st_stuff.c b/src/st_stuff.c
index 6ff73e03a6..3299c9d391 100644
--- a/src/st_stuff.c
+++ b/src/st_stuff.c
@@ -1216,6 +1216,9 @@ void ST_startTitleCard(void)
 //
 void ST_preDrawTitleCard(void)
 {
+	if (!G_IsTitleCardAvailable())
+		return;
+
 	if (lt_ticker >= (lt_endtime + TICRATE))
 		return;
 
@@ -1231,6 +1234,9 @@ void ST_preDrawTitleCard(void)
 //
 void ST_runTitleCard(void)
 {
+	if (!G_IsTitleCardAvailable())
+		return;
+
 	if (lt_ticker >= (lt_endtime + TICRATE))
 		return;
 
@@ -1284,6 +1290,9 @@ void ST_drawTitleCard(void)
 	INT32 zzticker;
 	patch_t *actpat, *zigzag, *zztext;
 
+	if (!G_IsTitleCardAvailable())
+		return;
+
 #ifdef HAVE_BLUA
 	if (!LUA_HudEnabled(hud_stagetitle))
 		goto luahook;
-- 
GitLab