X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=common.h;h=3a73d7caaded518484d3920f36d17bd9cae7f6c2;hp=4dd98044d103ea985dc631629993515545dc24e1;hb=620d0574b0890b31919e473824aedb8e08d10158;hpb=c165133925ee8190fe9c75a6a6cca5cd9442339c diff --git a/common.h b/common.h index 4dd98044..3a73d7ca 100644 --- a/common.h +++ b/common.h @@ -21,14 +21,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef COMMON_H #define COMMON_H + // MSVC has a different name for several standard functions #ifdef WIN32 -# define snprintf _snprintf -# define vsnprintf _vsnprintf # define strcasecmp stricmp # define strncasecmp strnicmp #endif +// Create our own define for Mac OS X +#if defined(__APPLE__) && defined(__MACH__) +# define MACOSX +#endif + //============================================================================ @@ -37,13 +41,10 @@ typedef struct sizebuf_s qboolean allowoverflow; // if false, do a Sys_Error qboolean overflowed; // set to true if the buffer size failed qbyte *data; - mempool_t *mempool; int maxsize; int cursize; } sizebuf_t; -void SZ_Alloc (sizebuf_t *buf, int startsize, const char *name); -void SZ_Free (sizebuf_t *buf); void SZ_Clear (sizebuf_t *buf); void *SZ_GetSpace (sizebuf_t *buf, int length); void SZ_Write (sizebuf_t *buf, const void *data, int length); @@ -52,6 +53,8 @@ void SZ_HexDumpToConsole(const sizebuf_t *buf); void Com_HexDumpToConsole(const qbyte *data, int size); +unsigned short CRC_Block(qbyte *data, int size); + //============================================================================ // Endianess handling @@ -115,10 +118,15 @@ void MSG_WriteShort (sizebuf_t *sb, int c); void MSG_WriteLong (sizebuf_t *sb, int c); void MSG_WriteFloat (sizebuf_t *sb, float f); void MSG_WriteString (sizebuf_t *sb, const char *s); -void MSG_WriteCoord (sizebuf_t *sb, float f); -void MSG_WriteAngle (sizebuf_t *sb, float f); -void MSG_WritePreciseAngle (sizebuf_t *sb, float f); -void MSG_WriteDPCoord (sizebuf_t *sb, float f); +void MSG_WriteAngle8i (sizebuf_t *sb, float f); +void MSG_WriteAngle16i (sizebuf_t *sb, float f); +void MSG_WriteAngle32f (sizebuf_t *sb, float f); +void MSG_WriteCoord13i (sizebuf_t *sb, float f); +void MSG_WriteCoord16i (sizebuf_t *sb, float f); +void MSG_WriteCoord32f (sizebuf_t *sb, float f); +void MSG_WriteCoord (sizebuf_t *sb, float f, int protocol); +void MSG_WriteVector (sizebuf_t *sb, float *v, int protocol); +void MSG_WriteAngle (sizebuf_t *sb, float f, int protocol); extern int msg_readcount; extern qboolean msg_badread; // set if a read goes beyond end of message @@ -139,12 +147,15 @@ int MSG_ReadBytes (int numbytes, unsigned char *out); #define MSG_ReadLong MSG_ReadLittleLong #define MSG_ReadFloat MSG_ReadLittleFloat -float MSG_ReadCoord (void); - -#define MSG_ReadAngle() (MSG_ReadByte() * (360.0f / 256.0f)) -#define MSG_ReadPreciseAngle() (MSG_ReadShort() * (360.0f / 65536.0f)) - -#define MSG_ReadVector(v) ((v)[0] = MSG_ReadCoord(), (v)[1] = MSG_ReadCoord(), (v)[2] = MSG_ReadCoord()) +float MSG_ReadAngle8i (void); +float MSG_ReadAngle16i (void); +float MSG_ReadAngle32f (void); +float MSG_ReadCoord13i (void); +float MSG_ReadCoord16i (void); +float MSG_ReadCoord32f (void); +float MSG_ReadCoord (int protocol); +void MSG_ReadVector (float *v, int protocol); +float MSG_ReadAngle (int protocol); //============================================================================ @@ -158,6 +169,7 @@ extern const char **com_argv; int COM_CheckParm (const char *parm); void COM_Init (void); +void COM_Shutdown (void); void COM_InitArgv (void); void COM_InitGameType (void); @@ -165,32 +177,53 @@ char *va(const char *format, ...); // does a varargs printf into a temp buffer +// snprintf and vsnprintf are NOT portable. Use their DP counterparts instead +#define snprintf DO_NOT_USE_SNPRINTF__USE_DPSNPRINTF +#define vsnprintf DO_NOT_USE_VSNPRINTF__USE_DPVSNPRINTF + +// dpsnprintf and dpvsnprintf +// return the number of printed characters, excluding the final '\0' +// or return -1 if the buffer isn't big enough to contain the entire string. +// buffer is ALWAYS null-terminated +extern int dpsnprintf (char *buffer, size_t buffersize, const char *format, ...); +extern int dpvsnprintf (char *buffer, size_t buffersize, const char *format, va_list args); + + //============================================================================ extern struct cvar_s registered; extern struct cvar_s cmdline; -#define GAME_NORMAL 0 -#define GAME_HIPNOTIC 1 -#define GAME_ROGUE 2 -#define GAME_NEHAHRA 3 -#define GAME_NEXUIZ 4 -#define GAME_TRANSFUSION 5 -#define GAME_GOODVSBAD2 6 -#define GAME_TEU 7 -#define GAME_BATTLEMECH 8 -#define GAME_ZYMOTIC 9 -#define GAME_FNIGGIUM 10 -#define GAME_SETHERAL 11 -#define GAME_SOM 12 -#define GAME_TENEBRAE 13 // full of evil hackery -#define GAME_NEOTERIC 14 -#define GAME_OPENQUARTZ 15 //this game sucks - -extern int gamemode; +typedef enum gamemode_e +{ + GAME_NORMAL, + GAME_HIPNOTIC, + GAME_ROGUE, + GAME_NEHAHRA, + GAME_NEXUIZ, + GAME_TRANSFUSION, + GAME_GOODVSBAD2, + GAME_TEU, + GAME_BATTLEMECH, + GAME_ZYMOTIC, + GAME_FNIGGIUM, + GAME_SETHERAL, + GAME_SOM, + GAME_TENEBRAE, // full of evil hackery + GAME_NEOTERIC, + GAME_OPENQUARTZ, //this game sucks + GAME_PRYDON, + GAME_NETHERWORLD, + GAME_THEHUNTED, +} +gamemode_t; + +extern gamemode_t gamemode; extern const char *gamename; -extern const char *gamedirname; +extern const char *gamedirname1; +extern const char *gamedirname2; extern const char *gamescreenshotname; +extern const char *gameuserdirname; extern char com_modname[MAX_OSPATH]; void COM_ToLowerString (const char *in, char *out, size_t size_out); @@ -209,7 +242,7 @@ int matchpattern(char *in, char *pattern, int caseinsensitive); stringlist_t *stringlistappend(stringlist_t *current, char *text); void stringlistfree(stringlist_t *current); stringlist_t *stringlistsort(stringlist_t *start); -stringlist_t *listdirectory(char *path); +stringlist_t *listdirectory(const char *path); void freedirectory(stringlist_t *list); char *SearchInfostring(const char *infostring, const char *key); @@ -217,7 +250,7 @@ char *SearchInfostring(const char *infostring, const char *key); // strlcat and strlcpy, from OpenBSD // Most (all?) BSDs already have them -#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || (defined(__APPLE__) && defined(__MACH__)) +#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(MACOSX) # define HAVE_STRLCAT 1 # define HAVE_STRLCPY 1 #endif