summaryrefslogtreecommitdiff
path: root/src/hexen/h2_main.c
diff options
context:
space:
mode:
authorFabian Greffrath2015-03-30 18:13:10 +0200
committerFabian Greffrath2015-03-30 18:13:10 +0200
commit535b4edd143ceeae870e9c13cdac65ce17e2be48 (patch)
tree11fa61069a3a5f73160913881af8f345d9312b7c /src/hexen/h2_main.c
parent833d8a838b44a950ebde587db1d888bf0a98e690 (diff)
parente0eb95922fbda64aca169d62029a5be071e1273f (diff)
downloadchocolate-doom-535b4edd143ceeae870e9c13cdac65ce17e2be48.tar.gz
chocolate-doom-535b4edd143ceeae870e9c13cdac65ce17e2be48.tar.bz2
chocolate-doom-535b4edd143ceeae870e9c13cdac65ce17e2be48.zip
Merge pull request #523 from chocolate-doom/hexndemo
Add support for the Hexen 4 Level Demo Version
Diffstat (limited to 'src/hexen/h2_main.c')
-rw-r--r--src/hexen/h2_main.c48
1 files changed, 46 insertions, 2 deletions
diff --git a/src/hexen/h2_main.c b/src/hexen/h2_main.c
index 9d92a65b..7084ceec 100644
--- a/src/hexen/h2_main.c
+++ b/src/hexen/h2_main.c
@@ -93,6 +93,7 @@ extern boolean askforquit;
// PUBLIC DATA DEFINITIONS -------------------------------------------------
GameMode_t gamemode;
+char *gamedescription;
char *iwadfile;
static char demolumpname[9]; // Demo lump to start playing.
boolean nomonsters; // checkparm of -nomonsters
@@ -112,6 +113,7 @@ boolean autostart;
boolean advancedemo;
FILE *debugfile;
int UpdateState;
+int maxplayers = MAXPLAYERS;
// PRIVATE DATA DEFINITIONS ------------------------------------------------
@@ -253,6 +255,46 @@ static void D_AddFile(char *filename)
W_AddFile(filename);
}
+// Find out what version of Hexen is playing.
+
+void D_IdentifyVersion(void)
+{
+ // The Hexen Shareware, ne 4 Level Demo Version, is missing the SKY1 lump
+ // and uses the SKY2 lump instead. Let's use this fact and the missing
+ // levels from MAP05 onward to identify it and set gamemode accordingly.
+
+ if (W_CheckNumForName("SKY1") == -1 &&
+ W_CheckNumForName("MAP05") == -1 )
+ {
+ gamemode = shareware;
+ maxplayers = 4;
+ }
+}
+
+// Set the gamedescription string.
+
+void D_SetGameDescription(void)
+{
+/*
+ NB: The 4 Level Demo Version actually prints a four-lined banner
+ (and indeed waits for a keypress):
+
+ Hexen: Beyond Heretic
+
+ 4 Level Demo Version
+ Press any key to continue.
+*/
+
+ if (gamemode == shareware)
+ {
+ gamedescription = "Hexen: 4 Level Demo Version";
+ }
+ else
+ {
+ gamedescription = "Hexen";
+ }
+}
+
//==========================================================================
//
// H2_Main
@@ -332,11 +374,13 @@ void D_DoomMain(void)
D_AddFile(iwadfile);
W_CheckCorrectIWAD(hexen);
+ D_IdentifyVersion();
+ D_SetGameDescription();
AdjustForMacIWAD();
HandleArgs();
- I_PrintStartupBanner("Hexen");
+ I_PrintStartupBanner(gamedescription);
ST_Message("MN_Init: Init menu system.\n");
MN_Init();
@@ -664,7 +708,7 @@ void H2_GameLoop(void)
M_snprintf(filename, sizeof(filename), "debug%i.txt", consoleplayer);
debugfile = fopen(filename, "w");
}
- I_SetWindowTitle("Hexen");
+ I_SetWindowTitle(gamedescription);
I_GraphicsCheckCommandLine();
I_SetGrabMouseCallback(D_GrabMouseCallback);
I_InitGraphics();