qboolean com_modified; // set true if using non-id files
-//qboolean proghack;
-
-//int static_registered = 1; // only for startup check, then set
-
qboolean msg_suppress_1 = 0;
void COM_InitFilesystem (void);
============================================================================
*/
-/*
-void Q_memset (void *dest, int fill, int count)
-{
- int i;
-
- if ( (((long)dest | count) & 3) == 0)
- {
- count >>= 2;
- fill = fill | (fill<<8) | (fill<<16) | (fill<<24);
- for (i=0 ; i<count ; i++)
- ((int *)dest)[i] = fill;
- }
- else
- for (i=0 ; i<count ; i++)
- ((qbyte *)dest)[i] = fill;
-}
-
-void Q_memcpy (void *dest, void *src, int count)
-{
- int i;
-
- if (( ( (long)dest | (long)src | count) & 3) == 0 )
- {
- count>>=2;
- for (i=0 ; i<count ; i++)
- ((int *)dest)[i] = ((int *)src)[i];
- }
- else
- for (i=0 ; i<count ; i++)
- ((qbyte *)dest)[i] = ((qbyte *)src)[i];
-}
-
-int Q_memcmp (void *m1, void *m2, int count)
-{
- while(count)
- {
- count--;
- if (((qbyte *)m1)[count] != ((qbyte *)m2)[count])
- return -1;
- }
- return 0;
-}
-
-void Q_strcpy (char *dest, char *src)
-{
- while (*src)
- {
- *dest++ = *src++;
- }
- *dest++ = 0;
-}
-
-void Q_strncpy (char *dest, char *src, int count)
-{
- while (*src && count--)
- {
- *dest++ = *src++;
- }
- if (count)
- *dest++ = 0;
-}
-
-int Q_strlen (char *str)
-{
- int count;
-
- count = 0;
- while (str[count])
- count++;
-
- return count;
-}
-
-char *Q_strrchr(char *s, char c)
-{
- int len = Q_strlen(s);
- s += len;
- while (len--)
- if (*--s == c) return s;
- return 0;
-}
-
-void Q_strcat (char *dest, char *src)
-{
- dest += Q_strlen(dest);
- Q_strcpy (dest, src);
-}
-
-int Q_strcmp (char *s1, char *s2)
-{
- while (1)
- {
- if (*s1 != *s2)
- return -1; // strings not equal
- if (!*s1)
- return 0; // strings are equal
- s1++;
- s2++;
- }
-
- return -1;
-}
-
-int Q_strncmp (char *s1, char *s2, int count)
-{
- while (1)
- {
- if (!count--)
- return 0;
- if (*s1 != *s2)
- return -1; // strings not equal
- if (!*s1)
- return 0; // strings are equal
- s1++;
- s2++;
- }
-
- return -1;
-}
-*/
int Q_strncasecmp (char *s1, char *s2, int n)
{
int c1, c2;
}
if (!c1)
return 0; // strings are equal
-// s1++;
-// s2++;
}
return -1;
{
return Q_strncasecmp (s1, s2, 99999);
}
-/*
-int Q_atoi (char *str)
-{
- int val;
- int sign;
- int c;
-
- if (*str == '-')
- {
- sign = -1;
- str++;
- }
- else
- sign = 1;
-
- val = 0;
-
-//
-// check for hex
-//
- if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X') )
- {
- str += 2;
- while (1)
- {
- c = *str++;
- if (c >= '0' && c <= '9')
- val = (val<<4) + c - '0';
- else if (c >= 'a' && c <= 'f')
- val = (val<<4) + c - 'a' + 10;
- else if (c >= 'A' && c <= 'F')
- val = (val<<4) + c - 'A' + 10;
- else
- return val*sign;
- }
- }
-
-//
-// check for character
-//
- if (str[0] == '\'')
- {
- return sign * str[1];
- }
-
-//
-// assume decimal
-//
- while (1)
- {
- c = *str++;
- if (c <'0' || c > '9')
- return val*sign;
- val = val*10 + c - '0';
- }
-
- return 0;
-}
-
-
-float Q_atof (char *str)
-{
- double val;
- int sign;
- int c;
- int decimal, total;
-
- if (*str == '-')
- {
- sign = -1;
- str++;
- }
- else
- sign = 1;
-
- val = 0;
-
-//
-// check for hex
-//
- if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X') )
- {
- str += 2;
- while (1)
- {
- c = *str++;
- if (c >= '0' && c <= '9')
- val = (val*16) + c - '0';
- else if (c >= 'a' && c <= 'f')
- val = (val*16) + c - 'a' + 10;
- else if (c >= 'A' && c <= 'F')
- val = (val*16) + c - 'A' + 10;
- else
- return val*sign;
- }
- }
-
-//
-// check for character
-//
- if (str[0] == '\'')
- {
- return sign * str[1];
- }
-
-//
-// assume decimal
-//
- decimal = -1;
- total = 0;
- while (1)
- {
- c = *str++;
- if (c == '.')
- {
- decimal = total;
- continue;
- }
- if (c <'0' || c > '9')
- break;
- val = val*10 + c - '0';
- total++;
- }
-
- if (decimal == -1)
- return val*sign;
- while (total > decimal)
- {
- val /= 10;
- total--;
- }
-
- return val*sign;
-}
-*/
/*
============================================================================
{
qbyte *buf;
-//#ifdef PARANOID
-// if (c < -128 || c > 127)
-// Sys_Error ("MSG_WriteChar: range error");
-//#endif
-
buf = SZ_GetSpace (sb, 1);
buf[0] = c;
}
{
qbyte *buf;
-//#ifdef PARANOID
-// if (c < 0 || c > 255)
-// Sys_Error ("MSG_WriteByte: range error");
-//#endif
-
buf = SZ_GetSpace (sb, 1);
buf[0] = c;
}
{
qbyte *buf;
-//#ifdef PARANOID
-// if (c < ((short)0x8000) || c > (short)0x7fff)
-// Sys_Error ("MSG_WriteShort: range error");
-//#endif
-
buf = SZ_GetSpace (sb, 2);
buf[0] = c&0xff;
buf[1] = c>>8;
msg_badread = false;
}
-/*
-// returns -1 and sets msg_badread if no more characters are available
-int MSG_ReadChar (void)
-{
- int c;
-
- // LordHavoc: minor optimization
- if (msg_readcount >= net_message.cursize)
-// if (msg_readcount+1 > net_message.cursize)
- {
- msg_badread = true;
- return -1;
- }
-
- c = (signed char)net_message.data[msg_readcount];
- msg_readcount++;
-
- return c;
-}
-
-int MSG_ReadByte (void)
-{
- int c;
-
- // LordHavoc: minor optimization
- if (msg_readcount >= net_message.cursize)
-// if (msg_readcount+1 > net_message.cursize)
- {
- msg_badread = true;
- return -1;
- }
-
- c = (unsigned char)net_message.data[msg_readcount];
- msg_readcount++;
-
- return c;
-}
-*/
-
int MSG_ReadShort (void)
{
int c;
return MSG_ReadShort() * (1.0f/8.0f);
}
-/*
-float MSG_ReadCoord (void)
-{
- return MSG_ReadShort() * (1.0f/8.0f);
-}
-
-float MSG_ReadAngle (void)
-{
- return MSG_ReadChar() * (360.0f/256.0f);
-}
-
-float MSG_ReadPreciseAngle (void)
-{
- return MSG_ReadShort() * (360.0f/65536);
-}
-*/
-
//===========================================================================
while (*in)
{
if (*in == '.')
- last = in;
- if ((*in == '/') || (*in == '\\') || (*in == ':'))
+ last = out;
+ else if (*in == '/' || *in == '\\' || *in == ':')
last = NULL;
*out++ = *in++;
}
{
Cvar_Set ("cmdline", com_cmdline);
-// static_registered = 0;
-
if (!Sys_FileTime("gfx/pop.lmp"))
{
if (com_modified)
Con_Printf ("Playing shareware version, with modification.\nwarning: most mods require full quake data.\n");
else
Con_Printf ("Playing shareware version.\n");
-//#if WINDED
-// Sys_Error ("This dedicated server requires a full registered copy of Quake");
-//#endif
-// Con_Printf ("Playing shareware version.\n");
-// if (com_modified)
-// Sys_Error ("You must have the registered version to use modified games");
return;
}
-// Cvar_Set ("cmdline", com_cmdline);
Cvar_Set ("registered", "1");
-// static_registered = 1;
Con_Printf ("Playing registered version.\n");
}
largv[com_argc] = argvdummy;
com_argv = largv;
-#if ZYMOTIC
+#if BLOODBATH
+ gamemode = GAME_BLOODBATH;
+#elif ZYMOTIC
gamemode = GAME_ZYMOTIC;
#elif FIENDARENA
gamemode = GAME_FIENDARENA;
#elif NEHAHRA
gamemode = GAME_NEHAHRA;
#else
- if (COM_CheckParm ("-zymotic"))
+ if (COM_CheckParm ("-bloodbath"))
+ gamemode = GAME_BLOODBATH;
+ else if (COM_CheckParm ("-zymotic"))
gamemode = GAME_ZYMOTIC;
else if (COM_CheckParm ("-fiendarena"))
gamemode = GAME_FIENDARENA;
case GAME_ZYMOTIC:
gamename = "Zymotic";
break;
+ case GAME_BLOODBATH:
+ gamename = "BloodBath";
+ break;
default:
Sys_Error("COM_InitArgv: unknown gamemode %i\n", gamemode);
break;
}
-/// just for debugging
-int memsearch (qbyte *start, int count, int search)
-{
- int i;
-
- for (i=0 ; i<count ; i++)
- if (start[i] == search)
- return i;
- return -1;
-}
-
/*
=============================================================================
for (ofs = path+1 ; *ofs ; ofs++)
{
- if (*ofs == '/' || *ofs == '\\' || *ofs == ':')
- { // create the directory
+ if (*ofs == '/' || *ofs == '\\')
+ {
+ // create the directory
save = *ofs;
*ofs = 0;
Sys_mkdir (path);
The filename will be prefixed by the current game directory
============
*/
-void COM_WriteFile (char *filename, void *data, int len)
+qboolean COM_WriteFile (char *filename, void *data, int len)
{
int handle;
char name[MAX_OSPATH];
handle = Sys_FileOpenWrite (name);
if (handle == -1)
{
- Sys_Printf ("COM_WriteFile: failed on %s\n", name);
- return;
+ Con_Printf ("COM_WriteFile: failed on %s\n", name);
+ return false;
}
- Con_Printf ("COM_WriteFile: %s\n", name);
+ Con_DPrintf ("COM_WriteFile: %s\n", name);
Sys_FileWrite (handle, data, len);
Sys_FileClose (handle);
+ return true;
}
// search through the path, one element at a time
//
search = com_searchpaths;
-// if (proghack)
-// { // gross hack to use quake 1 progs with quake 2 maps
-// if (!strcmp(filename, "progs.dat"))
-// search = search->next;
-// }
for ( ; search ; search = search->next)
{
}
else
{
- // check a file in the directory tree
-// if (!static_registered)
-// { // if not a registered version, don't ever go beyond base
-// if ( strchr (filename, '/') || strchr (filename,'\\'))
-// continue;
-// }
-
sprintf (netpath, "%s/%s",search->filename, filename);
findtime = Sys_FileTime (netpath);
dpackfile_t *info;
if (Sys_FileOpenRead (packfile, &packhandle) == -1)
- {
- //Con_Printf ("Couldn't open %s\n", packfile);
return NULL;
- }
+
Sys_FileRead (packhandle, (void *)&header, sizeof(header));
if (memcmp(header.id, "PACK", 4))
Sys_Error ("%s is not a packfile", packfile);
*/
void COM_AddGameDirectory (char *dir)
{
- int i;
- searchpath_t *search;
- pack_t *pak;
- char pakfile[MAX_OSPATH];
+ stringlist_t *list, *current;
+ searchpath_t *search;
+ pack_t *pak;
+ char pakfile[MAX_OSPATH];
strcpy (com_gamedir, dir);
search->next = com_searchpaths;
com_searchpaths = search;
-//
-// add any pak files in the format pak0.pak pak1.pak, ...
-//
- for (i=0 ; ; i++)
+ // add any paks in the directory
+ list = listdirectory(dir);
+ for (current = list;current;current = current->next)
{
- sprintf (pakfile, "%s/pak%i.pak", dir, i);
- pak = COM_LoadPackFile (pakfile);
- if (!pak)
- break;
- search = Mem_Alloc(pak_mempool, sizeof(searchpath_t));
- search->pack = pak;
- search->next = com_searchpaths;
- com_searchpaths = search;
+ if (matchpattern(current->text, "*.pak"))
+ {
+ sprintf (pakfile, "%s/%s", dir, current->text);
+ pak = COM_LoadPackFile (pakfile);
+ if (pak)
+ {
+ search = Mem_Alloc(pak_mempool, sizeof(searchpath_t));
+ search->pack = pak;
+ search->next = com_searchpaths;
+ com_searchpaths = search;
+ }
+ else
+ Con_Printf("unable to load pak \"%s\"\n", pakfile);
+ }
}
-
-//
-// add the contents of the parms.txt file to the end of the command line
-//
-
+ freedirectory(list);
}
/*
case GAME_ZYMOTIC:
COM_AddGameDirectory (va("%s/zymotic", basedir) );
break;
+ case GAME_BLOODBATH:
+ COM_AddGameDirectory (va("%s/bb", basedir) );
+ break;
default:
Sys_Error("COM_InitFilesystem: unknown gamemode %i\n", gamemode);
break;
com_searchpaths = search;
}
}
-
-// if (COM_CheckParm ("-proghack"))
-// proghack = true;
}
int COM_FileExists(char *filename)
*out++ = *in++;
}
}
+