shithub: duke3d

Download patch

ref: dc18cac1b8f7bff9b9f319cedab5d7995eba68b6
parent: 567d1451f21ba75d03cb73afed950ea89aad86c5
author: Fabien Sanglard <fabien.sanglard@gmail.com>
date: Wed Dec 19 14:09:45 EST 2012

Made game_dir encapsulated to filesystem module.

--- a/Engine/src/filesystem.c
+++ b/Engine/src/filesystem.c
@@ -13,6 +13,8 @@
 #include "pragmas.h"
 #include "global.h"
 
+char game_dir[512];
+
 uint8_t  toupperlookup[256] =
 {
 	0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
@@ -643,3 +645,17 @@
     
 	return result;
 }
+
+
+void   setGameDir(char* gameDir){
+    if (gameDir == NULL)
+        return;
+    
+    stpncpy(game_dir,gameDir,sizeof(game_dir));
+}
+
+char*  getGameDir(void){
+    return game_dir;
+}
+
+
--- a/Engine/src/filesystem.h
+++ b/Engine/src/filesystem.h
@@ -33,7 +33,9 @@
 int32_t compress(uint8_t  *lzwinbuf, int32_t uncompleng, uint8_t  *lzwoutbuf);
 int32_t uncompress(uint8_t  *lzwinbuf, int32_t compleng, uint8_t  *lzwoutbuf);
 
-extern char  game_dir[512];
+extern char*  getGameDir(void);
+extern void   setGameDir(char* gameDir);
+
 extern int32_t TCkopen4load(const char  *filename, int readfromGRP);
 
 #ifdef __APPLE__
--- a/Engine/src/macos_compat.h
+++ b/Engine/src/macos_compat.h
@@ -55,6 +55,6 @@
 #include <sys/uio.h>
 #include <unistd.h>
 #include <fcntl.h>
-
+#include <string.h>
 
 #endif
--- a/Game/src/config.c
+++ b/Game/src/config.c
@@ -101,11 +101,11 @@
    setupfilename[0] = '\0';
 
    // Are we trying to load a mod?
-   if(game_dir[0] != '\0'){
+   if(getGameDir()[0] != '\0'){
 		FILE *fp = NULL;
 
 	   //Yes
-		sprintf(setupfilename, "%s\\%s", game_dir, SETUPFILENAME);
+		sprintf(setupfilename, "%s\\%s", getGameDir(), SETUPFILENAME);
 		
 		// let's make sure it's actually there
 		fp = fopen(setupfilename, "r");
@@ -553,10 +553,10 @@
         fn[4] = i+'0';
 
 		// Are we loading a TC?
-		if(game_dir[0] != '\0')
+		if(getGameDir()[0] != '\0')
 		{
 			// Yes
-			sprintf(fullpathsavefilename, "%s\\%s", game_dir, fn);
+			sprintf(fullpathsavefilename, "%s\\%s", getGameDir(), fn);
 		}
 		else
 		{
--- a/Game/src/duke3d.h
+++ b/Game/src/duke3d.h
@@ -92,7 +92,7 @@
 
 extern uint8_t  conVersion;
 extern uint8_t  grpVersion;
-extern int32_t* groupefil_crc32;
+extern int32_t groupefil_crc32[4];
 
 #define RANCID_ID 1
 #define	XDUKE_ID  2
@@ -418,7 +418,7 @@
 	// FIX_00015: Backward compliance with older demos (down to demos v27, 28, 116 and 117 only)
 	uint8_t  playing_demo_rev;
 
-	uint32_t* groupefil_crc32[MAXPLAYERS];
+	uint32_t groupefil_crc32[MAXPLAYERS][4];
 	uint16_t conSize[MAXPLAYERS];
 
 #ifdef CHECK_XDUKE_REV
--- a/Game/src/game.c
+++ b/Game/src/game.c
@@ -7147,7 +7147,7 @@
 				// Get the file name
 				i++;
 				c = argv[i];
-				strncpy(game_dir, c, 512);
+				setGameDir(c);
 			
 				// skip over the file name now that we have it.
 				i++;
@@ -7210,8 +7210,8 @@
                         c++;
                         if(*c)
                         {
-							if(game_dir[0] != '\0'){
-								sprintf(confilename, "%s\\%s", game_dir, c);
+							if(getGameDir()[0] != '\0'){
+								sprintf(confilename, "%s\\%s", getGameDir(), c);
 							}
 							else{
 								strcpy(confilename,c);
@@ -7234,8 +7234,8 @@
 								strcat(c,".grp"); // crap!
 							}
 
-							if(game_dir[0] != '\0'){
-								sprintf(fullpathgrpfile, "%s\\%s", game_dir, c);
+							if(getGameDir()[0] != '\0'){
+								sprintf(fullpathgrpfile, "%s\\%s", getGameDir(), c);
 							}
 							else{
 								strcpy(fullpathgrpfile, c);
@@ -7732,14 +7732,8 @@
 
    puts("Loading art header.");
 
-   if(game_dir[0] != '\0')
-   {
-		loadpics("tiles000.art", game_dir);
-   }
-   else
-   {
-	   loadpics("tiles000.art", "\0");
-   }
+  loadpics("tiles000.art", "\0");
+   
 
    readsavenames();
 
@@ -8036,9 +8030,9 @@
     
     directoryToScan[0] = '\0';
     
-    if (game_dir[0] != '\0')
+    if (getGameDir()[0] != '\0')
     {
-        strcat(directoryToScan,game_dir);
+        strcat(directoryToScan,getGameDir());
         if (directoryToScan[strlen(directoryToScan)-1] != '/')
             strcat(directoryToScan,"/");
     }
@@ -8690,9 +8684,9 @@
     ver = BYTEVERSION;
 
 	// Are we loading a TC?
-	if(game_dir[0] != '\0'){
+	if(getGameDir()[0] != '\0'){
 		// Yes
-		sprintf(fullpathdemofilename, "%s\\%s", game_dir, d);
+		sprintf(fullpathdemofilename, "%s\\%s", getGameDir(), d);
 	}
 	else{
 		// No 
@@ -10608,11 +10602,11 @@
 
 
 	// If this is a TC save it to the TC's directory
-	if(game_dir[0] != '\0')
+	if(getGameDir()[0] != '\0')
 	{
-		sprintf(szFilename, "%s\\%s", game_dir, SCREENSHOTPATH);
+		sprintf(szFilename, "%s\\%s", getGameDir(), SCREENSHOTPATH);
 		mkdir(szFilename);
-		sprintf(szFilename, "%s\\%s\\%s", game_dir, SCREENSHOTPATH, tempbuf);
+		sprintf(szFilename, "%s\\%s\\%s", getGameDir(), SCREENSHOTPATH, tempbuf);
 	}
 	// otherwise let's save it to the root.
 	else
--- a/Game/src/menues.c
+++ b/Game/src/menues.c
@@ -582,10 +582,10 @@
 
 
 	// Are we loading a TC?
-	if(game_dir[0] != '\0')
+	if(getGameDir()[0] != '\0')
 	{
 		// Yes
-		sprintf(fullpathsavefilename, "%s\\%s", game_dir, fnptr);
+		sprintf(fullpathsavefilename, "%s\\%s", getGameDir(), fnptr);
 	}
 	else
 	{
--- a/Game/src/premap.c
+++ b/Game/src/premap.c
@@ -1481,7 +1481,7 @@
 {
     if( boardfilename[0] != 0 && ud.m_level_number == 7 && ud.m_volume_number == 0 )
     {
-		sprintf(fulllevelfilename, "%s\\%s",  game_dir, boardfilename);
+		sprintf(fulllevelfilename, "%s\\%s",  getGameDir(), boardfilename);
 		if(!SafeFileExists(fulllevelfilename))
 		{
 			sprintf(fulllevelfilename, "%s", boardfilename);
@@ -1495,7 +1495,7 @@
     }
     else
     {
-		sprintf(fulllevelfilename, "%s\\%s",  game_dir, level_file_names[ (ud.volume_number*11)+ud.level_number]);
+		sprintf(fulllevelfilename, "%s\\%s",  getGameDir(), level_file_names[ (ud.volume_number*11)+ud.level_number]);
 		if(!SafeFileExists(fulllevelfilename))
 		{
 			sprintf(fulllevelfilename, "%s", level_file_names[ (ud.volume_number*11)+ud.level_number]);