]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - common.c
R_SetSkyBox now takes a const char *
[xonotic/darkplaces.git] / common.c
index a6aeab1e3f2ddfb84eb6ec395cef81d404415f97..3dfcf6d51577d324702fcf62083d03de5cf9edee 100644 (file)
--- a/common.c
+++ b/common.c
@@ -41,6 +41,7 @@ qboolean msg_suppress_1 = 0;
 void COM_InitFilesystem (void);
 
 char com_token[1024];
+char com_basedir[MAX_OSPATH];
 int com_argc;
 char **com_argv;
 
@@ -50,6 +51,7 @@ char com_cmdline[CMDLINE_LENGTH];
 
 int gamemode;
 char *gamename;
+char *gamedirname;
 
 /*
 
@@ -432,13 +434,13 @@ void *SZ_GetSpace (sizebuf_t *buf, int length)
        if (buf->cursize + length > buf->maxsize)
        {
                if (!buf->allowoverflow)
-                       Host_Error ("SZ_GetSpace: overflow without allowoverflow set");
+                       Host_Error ("SZ_GetSpace: overflow without allowoverflow set\n");
 
                if (length > buf->maxsize)
-                       Host_Error ("SZ_GetSpace: %i is > full buffer size", length);
+                       Host_Error ("SZ_GetSpace: %i is > full buffer size\n", length);
 
                buf->overflowed = true;
-               Con_Printf ("SZ_GetSpace: overflow");
+               Con_Printf ("SZ_GetSpace: overflow\n");
                SZ_Clear (buf);
        }
 
@@ -456,7 +458,7 @@ void SZ_Write (sizebuf_t *buf, void *data, int length)
 void SZ_Print (sizebuf_t *buf, char *data)
 {
        int             len;
-       
+
        len = strlen(data)+1;
 
 // byte * cast to keep VC++ happy
@@ -466,6 +468,55 @@ void SZ_Print (sizebuf_t *buf, char *data)
                memcpy ((qbyte *)SZ_GetSpace(buf, len-1)-1,data,len); // write over trailing 0
 }
 
+static char *hexchar = "0123456789ABCDEF";
+void SZ_HexDumpToConsole(sizebuf_t *buf)
+{
+       int i;
+       char text[1024];
+       char *cur, *flushpointer;
+       cur = text;
+       flushpointer = text + 512;
+       for (i = 0;i < buf->cursize;i++)
+       {
+               if ((i & 15) == 0)
+               {
+                       *cur++ = hexchar[(i >> 12) & 15];
+                       *cur++ = hexchar[(i >>  8) & 15];
+                       *cur++ = hexchar[(i >>  4) & 15];
+                       *cur++ = hexchar[(i >>  0) & 15];
+                       *cur++ = ':';
+                       *cur++ = ' ';
+               }
+               else if ((i & 15) == 15)
+                       *cur++ = '\n';
+               else
+                       *cur++ = ' ';
+               if (i & 1)
+               {
+                       *cur++ = hexchar[(buf->data[i] >> 4) & 15] | 0x80;
+                       *cur++ = hexchar[(buf->data[i] >> 0) & 15] | 0x80;
+               }
+               else
+               {
+                       *cur++ = hexchar[(buf->data[i] >> 4) & 15];
+                       *cur++ = hexchar[(buf->data[i] >> 0) & 15];
+               }
+               if (cur >= flushpointer)
+               {
+                       *cur++ = 0;
+                       Con_Printf("%s", text);
+                       cur = text;
+               }
+       }
+       if ((i & 15) != 0)
+               *cur++ = '\n';
+       if (cur > text)
+       {
+               *cur++ = 0;
+               Con_Printf("%s", text);
+       }
+}
+
 
 //============================================================================
 
@@ -508,6 +559,8 @@ void COM_StripExtension (char *in, char *out)
        }
        if (last)
                *last = 0;
+       else
+               *out = 0;
 }
 
 /*
@@ -616,7 +669,7 @@ skipwhite:
                        return NULL;                    // end of file;
                data++;
        }
-       
+
 // skip // comments
        if (c=='/' && data[1] == '/')
        {
@@ -747,16 +800,12 @@ void COM_InitArgv (void)
 
 void COM_InitGameType (void)
 {
-       char name[128];
+       char name[MAX_OSPATH];
        COM_StripExtension(com_argv[0], name);
        COM_ToLowerString(name, name);
 
        if (strstr(name, "transfusion"))
                gamemode = GAME_TRANSFUSION;
-       else if (strstr(name, "zymotic"))
-               gamemode = GAME_ZYMOTIC;
-       else if (strstr(name, "fiendarena"))
-               gamemode = GAME_FIENDARENA;
        else if (strstr(name, "nehahra"))
                gamemode = GAME_NEHAHRA;
        else if (strstr(name, "hipnotic"))
@@ -768,10 +817,6 @@ void COM_InitGameType (void)
 
        if (COM_CheckParm ("-transfusion"))
                gamemode = GAME_TRANSFUSION;
-       else if (COM_CheckParm ("-zymotic"))
-               gamemode = GAME_ZYMOTIC;
-       else if (COM_CheckParm ("-fiendarena"))
-               gamemode = GAME_FIENDARENA;
        else if (COM_CheckParm ("-nehahra"))
                gamemode = GAME_NEHAHRA;
        else if (COM_CheckParm ("-hipnotic"))
@@ -784,28 +829,24 @@ void COM_InitGameType (void)
        switch(gamemode)
        {
        case GAME_NORMAL:
-               if (registered.integer)
-                       gamename = "DarkPlaces-Quake";
-               else
-                       gamename = "DarkPlaces-SharewareQuake";
+               gamename = "DarkPlaces-Quake";
+               gamedirname = "";
                break;
        case GAME_HIPNOTIC:
                gamename = "Darkplaces-Hipnotic";
+               gamedirname = "hipnotic";
                break;
        case GAME_ROGUE:
                gamename = "Darkplaces-Rogue";
+               gamedirname = "rogue";
                break;
        case GAME_NEHAHRA:
                gamename = "DarkPlaces-Nehahra";
-               break;
-       case GAME_FIENDARENA:
-               gamename = "FiendArena";
-               break;
-       case GAME_ZYMOTIC:
-               gamename = "Zymotic";
+               gamedirname = "nehahra";
                break;
        case GAME_TRANSFUSION:
                gamename = "Transfusion";
+               gamedirname = "transfusion";
                break;
        default:
                Sys_Error("COM_InitGameType: unknown gamemode %i\n", gamemode);
@@ -1185,7 +1226,7 @@ int COM_FindFile (char *filename, QFile **file, qboolean quiet, qboolean zip)
 #endif
 
                                cachetime = Sys_FileTime (cachepath);
-                       
+
                                if (cachetime < findtime)
                                        COM_CopyFile (netpath, cachepath);
                                strcpy (netpath, cachepath);
@@ -1384,93 +1425,40 @@ COM_InitFilesystem
 */
 void COM_InitFilesystem (void)
 {
-       int             i, j;
-       char    basedir[MAX_OSPATH];
-       searchpath_t    *search;
+       int i;
+       searchpath_t *search;
 
-//
-// -basedir <path>
-// Overrides the system supplied base directory (under GAMENAME)
-//
+       strcpy(com_basedir, ".");
+
+       // -basedir <path>
+       // Overrides the system supplied base directory (under GAMENAME)
        i = COM_CheckParm ("-basedir");
        if (i && i < com_argc-1)
-               strcpy (basedir, com_argv[i+1]);
-       else
-               strcpy (basedir, host_parms.basedir);
-
-       j = strlen (basedir);
+               strcpy (com_basedir, com_argv[i+1]);
 
-       if (j > 0)
-       {
-               if ((basedir[j-1] == '\\') || (basedir[j-1] == '/'))
-                       basedir[j-1] = 0;
-       }
-
-#if CACHEENABLE
-//
-// -cachedir <path>
-// Overrides the system supplied cache directory (NULL or /qcache)
-// -cachedir - will disable caching.
-//
-       i = COM_CheckParm ("-cachedir");
-       if (i && i < com_argc-1)
-       {
-               if (com_argv[i+1][0] == '-')
-                       com_cachedir[0] = 0;
-               else
-                       strcpy (com_cachedir, com_argv[i+1]);
-       }
-       else if (host_parms.cachedir)
-               strcpy (com_cachedir, host_parms.cachedir);
-       else
-               com_cachedir[0] = 0;
-#endif
+       i = strlen (com_basedir);
+       if (i > 0 && (com_basedir[i-1] == '\\' || com_basedir[i-1] == '/'))
+               com_basedir[i-1] = 0;
 
 // start up with GAMENAME by default (id1)
-       COM_AddGameDirectory (va("%s/"GAMENAME, basedir) );
-
-       switch(gamemode)
+       COM_AddGameDirectory (va("%s/"GAMENAME, com_basedir));
+       if (gamedirname[0])
        {
-       case GAME_NORMAL:
-               break;
-       case GAME_HIPNOTIC:
-               COM_AddGameDirectory (va("%s/hipnotic", basedir) );
-               break;
-       case GAME_ROGUE:
-               COM_AddGameDirectory (va("%s/rogue", basedir) );
-               break;
-       case GAME_NEHAHRA:
-               COM_AddGameDirectory (va("%s/nehahra", basedir) );
-               break;
-       case GAME_FIENDARENA:
-               COM_AddGameDirectory (va("%s/fiendarena", basedir) );
-               break;
-       case GAME_ZYMOTIC:
-               COM_AddGameDirectory (va("%s/zymotic", basedir) );
-               break;
-       case GAME_TRANSFUSION:
-               COM_AddGameDirectory (va("%s/transfusion", basedir) );
-               break;
-       default:
-               Sys_Error("COM_InitFilesystem: unknown gamemode %i\n", gamemode);
-               break;
+               com_modified = true;
+               COM_AddGameDirectory (va("%s/%s", com_basedir, gamedirname));
        }
 
-//
-// -game <gamedir>
-// Adds basedir/gamedir as an override game
-//
+       // -game <gamedir>
+       // Adds basedir/gamedir as an override game
        i = COM_CheckParm ("-game");
        if (i && i < com_argc-1)
        {
                com_modified = true;
-               COM_AddGameDirectory (va("%s/%s", basedir, com_argv[i+1]));
+               COM_AddGameDirectory (va("%s/%s", com_basedir, com_argv[i+1]));
        }
 
-//
-// -path <dir or packfile> [<dir or packfile>] ...
-// Fully specifies the exact search path, overriding the generated one
-//
+       // -path <dir or packfile> [<dir or packfile>] ...
+       // Fully specifies the exact search path, overriding the generated one
        i = COM_CheckParm ("-path");
        if (i)
        {