}
else
for (i=0 ; i<count ; i++)
- ((byte *)dest)[i] = fill;
+ ((qbyte *)dest)[i] = fill;
}
void Q_memcpy (void *dest, void *src, int count)
}
else
for (i=0 ; i<count ; i++)
- ((byte *)dest)[i] = ((byte *)src)[i];
+ ((qbyte *)dest)[i] = ((qbyte *)src)[i];
}
int Q_memcmp (void *m1, void *m2, int count)
while(count)
{
count--;
- if (((byte *)m1)[count] != ((byte *)m2)[count])
+ if (((qbyte *)m1)[count] != ((qbyte *)m2)[count])
return -1;
}
return 0;
short ShortSwap (short l)
{
- byte b1,b2;
+ qbyte b1,b2;
b1 = l&255;
b2 = (l>>8)&255;
int LongSwap (int l)
{
- byte b1,b2,b3,b4;
+ qbyte b1,b2,b3,b4;
b1 = l&255;
b2 = (l>>8)&255;
union
{
float f;
- byte b[4];
+ qbyte b[4];
} dat1, dat2;
void MSG_WriteChar (sizebuf_t *sb, int c)
{
- byte *buf;
+ qbyte *buf;
//#ifdef PARANOID
// if (c < -128 || c > 127)
void MSG_WriteByte (sizebuf_t *sb, int c)
{
- byte *buf;
+ qbyte *buf;
//#ifdef PARANOID
// if (c < 0 || c > 255)
void MSG_WriteShort (sizebuf_t *sb, int c)
{
- byte *buf;
+ qbyte *buf;
//#ifdef PARANOID
// if (c < ((short)0x8000) || c > (short)0x7fff)
void MSG_WriteLong (sizebuf_t *sb, int c)
{
- byte *buf;
+ qbyte *buf;
buf = SZ_GetSpace (sb, 4);
buf[0] = c&0xff;
SZ_Write (sb, s, strlen(s)+1);
}
-// used by server (always dpprotocol)
-// moved to common.h as #define
-/*
-void MSG_WriteFloatCoord (sizebuf_t *sb, float f)
-{
- MSG_WriteFloat(sb, f);
-}
-*/
-
-// used by client
-void MSG_WriteCoord (sizebuf_t *sb, float f)
+// used by server (always latest dpprotocol)
+void MSG_WriteDPCoord (sizebuf_t *sb, float f)
{
- if (dpprotocol)
- MSG_WriteFloat(sb, f);
+ if (f >= 0)
+ MSG_WriteShort (sb, (int)(f + 0.5f));
else
- {
- if (f >= 0)
- MSG_WriteShort (sb, (int)(f*8.0f + 0.5f));
- else
- MSG_WriteShort (sb, (int)(f*8.0f - 0.5f));
- }
+ MSG_WriteShort (sb, (int)(f - 0.5f));
}
void MSG_WritePreciseAngle (sizebuf_t *sb, float f)
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++;
int MSG_ReadByte (void)
{
int c;
-
+
// LordHavoc: minor optimization
if (msg_readcount >= net_message.cursize)
// if (msg_readcount+1 > net_message.cursize)
c = (unsigned char)net_message.data[msg_readcount];
msg_readcount++;
-
+
return c;
}
*/
msg_badread = true;
return -1;
}
-
+
c = (short)(net_message.data[msg_readcount]
+ (net_message.data[msg_readcount+1]<<8));
-
+
msg_readcount += 2;
-
+
return c;
}
int MSG_ReadLong (void)
{
int c;
-
+
if (msg_readcount+4 > net_message.cursize)
{
msg_badread = true;
+ (net_message.data[msg_readcount+1]<<8)
+ (net_message.data[msg_readcount+2]<<16)
+ (net_message.data[msg_readcount+3]<<24);
-
+
msg_readcount += 4;
-
+
return c;
}
{
union
{
- byte b[4];
+ qbyte b[4];
float f;
int l;
} dat;
-
+
dat.b[0] = net_message.data[msg_readcount];
dat.b[1] = net_message.data[msg_readcount+1];
dat.b[2] = net_message.data[msg_readcount+2];
dat.b[3] = net_message.data[msg_readcount+3];
msg_readcount += 4;
-
+
dat.l = LittleLong (dat.l);
- return dat.f;
+ return dat.f;
}
char *MSG_ReadString (void)
{
static char string[2048];
int l,c;
-
+
l = 0;
do
{
string[l] = c;
l++;
} while (l < sizeof(string)-1);
-
+
string[l] = 0;
-
+
return string;
}
-// used by server (always dpprotocol)
-// moved to common.h as #define
-/*
-float MSG_ReadFloatCoord (void)
+// used by server (always latest dpprotocol)
+float MSG_ReadDPCoord (void)
{
- return MSG_ReadFloat();
+ return (signed short) MSG_ReadShort();
}
-*/
// used by client
float MSG_ReadCoord (void)
{
- if (dpprotocol)
+ if (dpprotocol == DPPROTOCOL_VERSION2 || dpprotocol == DPPROTOCOL_VERSION3)
+ return (signed short) MSG_ReadShort();
+ else if (dpprotocol == DPPROTOCOL_VERSION1)
return MSG_ReadFloat();
else
return MSG_ReadShort() * (1.0f/8.0f);
if (buf->cursize + length > buf->maxsize)
{
if (!buf->allowoverflow)
- Host_Error ("SZ_GetSpace: overflow without allowoverflow set - use -zone on the commandline for more zone memory, default: 128k (quake original default was 48k)");
+ Host_Error ("SZ_GetSpace: overflow without allowoverflow set");
if (length > buf->maxsize)
Host_Error ("SZ_GetSpace: %i is > full buffer size", length);
// byte * cast to keep VC++ happy
if (buf->data[buf->cursize-1])
- memcpy ((byte *)SZ_GetSpace(buf, len),data,len); // no trailing 0
+ memcpy ((qbyte *)SZ_GetSpace(buf, len),data,len); // no trailing 0
else
- memcpy ((byte *)SZ_GetSpace(buf, len-1)-1,data,len); // write over trailing 0
+ memcpy ((qbyte *)SZ_GetSpace(buf, len-1)-1,data,len); // write over trailing 0
}
while (*in)
{
if (*in == '.')
- last = in;
- if ((*in == '/') || (*in == '\\') || (*in == ':'))
+ last = out;
+ else if (*in == '/' || *in == '\\' || *in == ':')
last = NULL;
*out++ = *in++;
}
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;
void COM_Init (void)
{
#if !defined(ENDIAN_LITTLE) && !defined(ENDIAN_BIG)
- byte swaptest[2] = {1,0};
+ qbyte swaptest[2] = {1,0};
// set the byte swapping variables in a portable manner
if ( *(short *)swaptest == 1)
*/
char *va(char *format, ...)
{
- va_list argptr;
- static char string[1024];
-
+ va_list argptr;
+ // LordHavoc: now cycles through 8 buffers to avoid problems in most cases
+ static char string[8][1024], *s;
+ static int stringindex = 0;
+
+ s = string[stringindex];
+ stringindex = (stringindex + 1) & 7;
va_start (argptr, format);
- vsprintf (string, format,argptr);
+ vsprintf (s, format,argptr);
va_end (argptr);
- return string;
+ return s;
}
/// just for debugging
-int memsearch (byte *start, int count, int search)
+int memsearch (qbyte *start, int count, int search)
{
int i;
-
+
for (i=0 ; i<count ; i++)
if (start[i] == search)
return i;
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;
}
Always appends a 0 byte.
============
*/
-byte *loadbuf;
-int loadsize;
-byte *COM_LoadFile (char *path, qboolean quiet)
+qbyte *loadbuf;
+int loadsize;
+qbyte *COM_LoadFile (char *path, qboolean quiet)
{
- QFile *h;
- byte *buf;
- char base[1024];
- int len;
+ QFile *h;
+ qbyte *buf;
+ char base[1024];
+ int len;
buf = NULL; // quiet compiler warning
loadsize = 0;
if (!buf)
Sys_Error ("COM_LoadFile: not enough available memory for %s (size %i)", path, len);
- ((byte *)buf)[len] = 0;
+ ((qbyte *)buf)[len] = 0;
Qread (h, buf, len);
Qclose (h);
*/
void COM_AddGameDirectory (char *dir)
{
- int i;
- searchpath_t *search;
- pack_t *pak;
- char pakfile[MAX_OSPATH];
+ //int i;
+ 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 paks in the directory
+ list = listdirectory(dir);
+ for (current = list;current;current = current->next)
+ {
+ 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);
+ }
+ }
+ freedirectory(list);
+
+ /*
//
// add any pak files in the format pak0.pak pak1.pak, ...
//
search->next = com_searchpaths;
com_searchpaths = search;
}
+ */
//
// add the contents of the parms.txt file to the end of the command line
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;