]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - common.c
darkplaces now compiles in mingw
[xonotic/darkplaces.git] / common.c
index 27112675c830b572a56a29fac0749925330a2000..daa7fbde44efd30ae09aa0758be96ca831178f03 100644 (file)
--- a/common.c
+++ b/common.c
@@ -109,7 +109,7 @@ void Q_memset (void *dest, int fill, int count)
        }
        else
                for (i=0 ; i<count ; i++)
-                       ((byte *)dest)[i] = fill;
+                       ((qbyte *)dest)[i] = fill;
 }
 
 void Q_memcpy (void *dest, void *src, int count)
@@ -124,7 +124,7 @@ 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)
@@ -132,7 +132,7 @@ 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;
@@ -404,7 +404,7 @@ float   (*LittleFloat) (float l);
 
 short   ShortSwap (short l)
 {
-       byte    b1,b2;
+       qbyte    b1,b2;
 
        b1 = l&255;
        b2 = (l>>8)&255;
@@ -421,7 +421,7 @@ short   ShortNoSwap (short l)
 
 int    LongSwap (int l)
 {
-       byte    b1,b2,b3,b4;
+       qbyte    b1,b2,b3,b4;
 
        b1 = l&255;
        b2 = (l>>8)&255;
@@ -443,7 +443,7 @@ float FloatSwap (float f)
        union
        {
                float   f;
-               byte    b[4];
+               qbyte    b[4];
        } dat1, dat2;
 
 
@@ -477,7 +477,7 @@ Handles byte ordering and avoids alignment errors
 
 void MSG_WriteChar (sizebuf_t *sb, int c)
 {
-       byte    *buf;
+       qbyte    *buf;
        
 //#ifdef PARANOID
 //     if (c < -128 || c > 127)
@@ -490,7 +490,7 @@ void MSG_WriteChar (sizebuf_t *sb, int c)
 
 void MSG_WriteByte (sizebuf_t *sb, int c)
 {
-       byte    *buf;
+       qbyte    *buf;
        
 //#ifdef PARANOID
 //     if (c < 0 || c > 255)
@@ -503,7 +503,7 @@ void MSG_WriteByte (sizebuf_t *sb, int c)
 
 void MSG_WriteShort (sizebuf_t *sb, int c)
 {
-       byte    *buf;
+       qbyte    *buf;
 
 //#ifdef PARANOID
 //     if (c < ((short)0x8000) || c > (short)0x7fff)
@@ -517,7 +517,7 @@ void MSG_WriteShort (sizebuf_t *sb, int c)
 
 void MSG_WriteLong (sizebuf_t *sb, int c)
 {
-       byte    *buf;
+       qbyte    *buf;
 
        buf = SZ_GetSpace (sb, 4);
        buf[0] = c&0xff;
@@ -549,19 +549,26 @@ void MSG_WriteString (sizebuf_t *sb, char *s)
                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)
+// used by server (always latest dpprotocol)
+void MSG_WriteDPCoord (sizebuf_t *sb, float f)
 {
-       MSG_WriteFloat(sb, f);
+       if (f >= 0)
+               MSG_WriteShort (sb, (int)(f + 0.5f));
+       else
+               MSG_WriteShort (sb, (int)(f - 0.5f));
 }
-*/
 
 // used by client
 void MSG_WriteCoord (sizebuf_t *sb, float f)
 {
-       if (dpprotocol)
+       if (dpprotocol == DPPROTOCOL_VERSION2)
+       {
+               if (f >= 0)
+                       MSG_WriteShort (sb, (int)(f + 0.5f));
+               else
+                       MSG_WriteShort (sb, (int)(f - 0.5f));
+       }
+       else if (dpprotocol == DPPROTOCOL_VERSION1)
                MSG_WriteFloat(sb, f);
        else
        {
@@ -606,7 +613,7 @@ void MSG_BeginReading (void)
 int MSG_ReadChar (void)
 {
        int     c;
-       
+
        // LordHavoc: minor optimization
        if (msg_readcount >= net_message.cursize)
 //     if (msg_readcount+1 > net_message.cursize)
@@ -614,7 +621,7 @@ int MSG_ReadChar (void)
                msg_badread = true;
                return -1;
        }
-               
+
        c = (signed char)net_message.data[msg_readcount];
        msg_readcount++;
 
@@ -624,7 +631,7 @@ int MSG_ReadChar (void)
 int MSG_ReadByte (void)
 {
        int     c;
-       
+
        // LordHavoc: minor optimization
        if (msg_readcount >= net_message.cursize)
 //     if (msg_readcount+1 > net_message.cursize)
@@ -635,7 +642,7 @@ int MSG_ReadByte (void)
 
        c = (unsigned char)net_message.data[msg_readcount];
        msg_readcount++;
-       
+
        return c;
 }
 */
@@ -649,19 +656,19 @@ int MSG_ReadShort (void)
                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;
@@ -672,9 +679,9 @@ int MSG_ReadLong (void)
        + (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;
 }
 
@@ -682,27 +689,27 @@ float MSG_ReadFloat (void)
 {
        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
        {
@@ -712,25 +719,24 @@ char *MSG_ReadString (void)
                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)
+               return (signed short) MSG_ReadShort();
+       else if (dpprotocol == DPPROTOCOL_VERSION1)
                return MSG_ReadFloat();
        else
                return MSG_ReadShort() * (1.0f/8.0f);
@@ -787,7 +793,7 @@ 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 - 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);
@@ -816,9 +822,9 @@ void SZ_Print (sizebuf_t *buf, char *data)
 
 // 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
 }
 
 
@@ -1196,7 +1202,7 @@ COM_Init
 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)
@@ -1243,22 +1249,26 @@ FIXME: make this buffer size safe someday
 */
 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;
@@ -1620,14 +1630,14 @@ Filename are reletive to the quake directory.
 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;
@@ -1646,7 +1656,7 @@ byte *COM_LoadFile (char *path, qboolean quiet)
        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);