Annotation of quake2/qcommon/qcommon.h, revision 1.1

1.1     ! root        1: 
        !             2: // qcommon.h -- definitions common between client and server, but not game.dll
        !             3: 
        !             4: #include "../game/q_shared.h"
        !             5: 
        !             6: 
        !             7: #define        VERSION         3.14
        !             8: 
        !             9: 
        !            10: 
        !            11: #ifdef WIN32
        !            12: 
        !            13: #ifdef NDEBUG
        !            14: #define BUILDSTRING "RELEASE"
        !            15: #else
        !            16: #define BUILDSTRING "DEBUG"
        !            17: #endif
        !            18: 
        !            19: #ifdef _M_IX86
        !            20: #define        CPUSTRING       "x86"
        !            21: #elif defined _M_ALPHA
        !            22: #define        CPUSTRING       "AXP"
        !            23: #endif
        !            24: 
        !            25: #else  // !WIN32
        !            26: 
        !            27: 
        !            28: #define BUILDSTRING "NON-WIN32"
        !            29: #define        CPUSTRING       "NON-WIN32"
        !            30: 
        !            31: #endif
        !            32: 
        !            33: //============================================================================
        !            34: 
        !            35: typedef struct sizebuf_s
        !            36: {
        !            37:        qboolean        allowoverflow;  // if false, do a Com_Error
        !            38:        qboolean        overflowed;             // set to true if the buffer size failed
        !            39:        byte    *data;
        !            40:        int             maxsize;
        !            41:        int             cursize;
        !            42:        int             readcount;
        !            43: } sizebuf_t;
        !            44: 
        !            45: void SZ_Init (sizebuf_t *buf, byte *data, int length);
        !            46: void SZ_Clear (sizebuf_t *buf);
        !            47: void *SZ_GetSpace (sizebuf_t *buf, int length);
        !            48: void SZ_Write (sizebuf_t *buf, void *data, int length);
        !            49: void SZ_Print (sizebuf_t *buf, char *data);    // strcats onto the sizebuf
        !            50: 
        !            51: //============================================================================
        !            52: 
        !            53: struct usercmd_s;
        !            54: struct entity_state_s;
        !            55: 
        !            56: void MSG_WriteChar (sizebuf_t *sb, int c);
        !            57: void MSG_WriteByte (sizebuf_t *sb, int c);
        !            58: void MSG_WriteShort (sizebuf_t *sb, int c);
        !            59: void MSG_WriteLong (sizebuf_t *sb, int c);
        !            60: void MSG_WriteFloat (sizebuf_t *sb, float f);
        !            61: void MSG_WriteString (sizebuf_t *sb, char *s);
        !            62: void MSG_WriteCoord (sizebuf_t *sb, float f);
        !            63: void MSG_WritePos (sizebuf_t *sb, vec3_t pos);
        !            64: void MSG_WriteAngle (sizebuf_t *sb, float f);
        !            65: void MSG_WriteAngle16 (sizebuf_t *sb, float f);
        !            66: void MSG_WriteDeltaUsercmd (sizebuf_t *sb, struct usercmd_s *from, struct usercmd_s *cmd);
        !            67: void MSG_WriteDeltaEntity (struct entity_state_s *from, struct entity_state_s *to
        !            68:                                                   , sizebuf_t *msg, qboolean force);
        !            69: void MSG_WriteDir (sizebuf_t *sb, vec3_t vector);
        !            70: 
        !            71: 
        !            72: void   MSG_BeginReading (sizebuf_t *sb);
        !            73: 
        !            74: int            MSG_ReadChar (sizebuf_t *sb);
        !            75: int            MSG_ReadByte (sizebuf_t *sb);
        !            76: int            MSG_ReadShort (sizebuf_t *sb);
        !            77: int            MSG_ReadLong (sizebuf_t *sb);
        !            78: float  MSG_ReadFloat (sizebuf_t *sb);
        !            79: char   *MSG_ReadString (sizebuf_t *sb);
        !            80: char   *MSG_ReadStringLine (sizebuf_t *sb);
        !            81: 
        !            82: float  MSG_ReadCoord (sizebuf_t *sb);
        !            83: void   MSG_ReadPos (sizebuf_t *sb, vec3_t pos);
        !            84: float  MSG_ReadAngle (sizebuf_t *sb);
        !            85: float  MSG_ReadAngle16 (sizebuf_t *sb);
        !            86: void   MSG_ReadDeltaUsercmd (sizebuf_t *sb, struct usercmd_s *from, struct usercmd_s *cmd);
        !            87: 
        !            88: void   MSG_ReadDir (sizebuf_t *sb, vec3_t vector);
        !            89: 
        !            90: void   MSG_ReadData (sizebuf_t *sb, void *buffer, int size);
        !            91: 
        !            92: //============================================================================
        !            93: 
        !            94: extern qboolean                bigendien;
        !            95: 
        !            96: extern short   BigShort (short l);
        !            97: extern short   LittleShort (short l);
        !            98: extern int             BigLong (int l);
        !            99: extern int             LittleLong (int l);
        !           100: extern float   BigFloat (float l);
        !           101: extern float   LittleFloat (float l);
        !           102: 
        !           103: //============================================================================
        !           104: 
        !           105: 
        !           106: int    COM_Argc (void);
        !           107: char *COM_Argv (int arg);      // range and null checked
        !           108: void COM_ClearArgv (int arg);
        !           109: int COM_CheckParm (char *parm);
        !           110: void COM_AddParm (char *parm);
        !           111: 
        !           112: void COM_Init (void);
        !           113: void COM_InitArgv (int argc, char **argv);
        !           114: 
        !           115: char *CopyString (char *in);
        !           116: 
        !           117: //============================================================================
        !           118: 
        !           119: void Info_Print (char *s);
        !           120: 
        !           121: 
        !           122: /* crc.h */
        !           123: 
        !           124: void CRC_Init(unsigned short *crcvalue);
        !           125: void CRC_ProcessByte(unsigned short *crcvalue, byte data);
        !           126: unsigned short CRC_Value(unsigned short crcvalue);
        !           127: int CRC_Block (byte *start, int count);
        !           128: 
        !           129: 
        !           130: 
        !           131: 
        !           132: /*
        !           133: ==============================================================
        !           134: 
        !           135: PROTOCOL
        !           136: 
        !           137: ==============================================================
        !           138: */
        !           139: 
        !           140: // protocol.h -- communications protocols
        !           141: 
        !           142: #define        PROTOCOL_VERSION        31
        !           143: 
        !           144: //=========================================
        !           145: 
        !           146: #define        PORT_MASTER     27900
        !           147: #define        PORT_CLIENT     27901
        !           148: #define        PORT_SERVER     27910
        !           149: 
        !           150: //=========================================
        !           151: 
        !           152: #define        UPDATE_BACKUP   16      // copies of entity_state_t to keep buffered
        !           153:                                                        // must be power of two
        !           154: #define        UPDATE_MASK             (UPDATE_BACKUP-1)
        !           155: 
        !           156: 
        !           157: 
        !           158: //==================
        !           159: // the svc_strings[] array in cl_parse.c should mirror this
        !           160: //==================
        !           161: 
        !           162: //
        !           163: // server to client
        !           164: //
        !           165: enum svc_ops_e
        !           166: {
        !           167:        svc_bad,
        !           168: 
        !           169:        // these ops are known to the game dll
        !           170:        svc_muzzleflash,
        !           171:        svc_muzzleflash2,
        !           172:        svc_temp_entity,
        !           173:        svc_layout,
        !           174:        svc_inventory,
        !           175: 
        !           176:        // the rest are private to the client and server
        !           177:        svc_nop,
        !           178:        svc_disconnect,
        !           179:        svc_reconnect,
        !           180:        svc_sound,                                      // <see code>
        !           181:        svc_print,                                      // [byte] id [string] null terminated string
        !           182:        svc_stufftext,                          // [string] stuffed into client's console buffer, should be \n terminated
        !           183:        svc_serverdata,                         // [long] protocol ...
        !           184:        svc_configstring,                       // [short] [string]
        !           185:        svc_spawnbaseline,              
        !           186:        svc_centerprint,                        // [string] to put in center of the screen
        !           187:        svc_download,                           // [short] size [size bytes]
        !           188:        svc_playerinfo,                         // variable
        !           189:        svc_packetentities,                     // [...]
        !           190:        svc_deltapacketentities,        // [...]
        !           191:        svc_frame
        !           192: };
        !           193: 
        !           194: //==============================================
        !           195: 
        !           196: //
        !           197: // client to server
        !           198: //
        !           199: enum clc_ops_e
        !           200: {
        !           201:        clc_bad,
        !           202:        clc_nop,                
        !           203:        clc_move,                               // [[usercmd_t]
        !           204:        clc_userinfo,                   // [[userinfo string]
        !           205:        clc_stringcmd                   // [string] message
        !           206: };
        !           207: 
        !           208: //==============================================
        !           209: 
        !           210: // plyer_state_t communication
        !           211: 
        !           212: #define        PS_M_TYPE                       (1<<0)
        !           213: #define        PS_M_ORIGIN                     (1<<1)
        !           214: #define        PS_M_VELOCITY           (1<<2)
        !           215: #define        PS_M_TIME                       (1<<3)
        !           216: #define        PS_M_FLAGS                      (1<<4)
        !           217: #define        PS_M_GRAVITY            (1<<5)
        !           218: #define        PS_M_DELTA_ANGLES       (1<<6)
        !           219: 
        !           220: #define        PS_VIEWOFFSET           (1<<7)
        !           221: #define        PS_VIEWANGLES           (1<<8)
        !           222: #define        PS_KICKANGLES           (1<<9)
        !           223: #define        PS_BLEND                        (1<<10)
        !           224: #define        PS_FOV                          (1<<11)
        !           225: #define        PS_WEAPONINDEX          (1<<12)
        !           226: #define        PS_WEAPONFRAME          (1<<13)
        !           227: #define        PS_RDFLAGS                      (1<<14)
        !           228: 
        !           229: //==============================================
        !           230: 
        !           231: // user_cmd_t communication
        !           232: 
        !           233: // ms and light allways sent, the others are optional
        !           234: #define        CM_ANGLE1       (1<<0)
        !           235: #define        CM_ANGLE2       (1<<1)
        !           236: #define        CM_ANGLE3       (1<<2)
        !           237: #define        CM_FORWARD      (1<<3)
        !           238: #define        CM_SIDE         (1<<4)
        !           239: #define        CM_UP           (1<<5)
        !           240: #define        CM_BUTTONS      (1<<6)
        !           241: #define        CM_IMPULSE      (1<<7)
        !           242: 
        !           243: //==============================================
        !           244: 
        !           245: // a sound without an ent or pos will be a local only sound
        !           246: #define        SND_VOLUME              (1<<0)          // a byte
        !           247: #define        SND_ATTENUATION (1<<1)          // a byte
        !           248: #define        SND_POS                 (1<<2)          // three coordinates
        !           249: #define        SND_ENT                 (1<<3)          // a short 0-2: channel, 3-12: entity
        !           250: #define        SND_OFFSET              (1<<4)          // a byte, msec offset from frame start
        !           251: 
        !           252: #define DEFAULT_SOUND_PACKET_VOLUME    1.0
        !           253: #define DEFAULT_SOUND_PACKET_ATTENUATION 1.0
        !           254: 
        !           255: //==============================================
        !           256: 
        !           257: // entity_state_t communication
        !           258: 
        !           259: // try to pack the common update flags into the first byte
        !           260: #define        U_ORIGIN1       (1<<0)
        !           261: #define        U_ORIGIN2       (1<<1)
        !           262: #define        U_ANGLE2        (1<<2)
        !           263: #define        U_ANGLE3        (1<<3)
        !           264: #define        U_FRAME8        (1<<4)          // frame is a byte
        !           265: #define        U_EVENT         (1<<5)
        !           266: #define        U_REMOVE        (1<<6)          // REMOVE this entity, don't add it
        !           267: #define        U_MOREBITS1     (1<<7)          // read one additional byte
        !           268: 
        !           269: // second byte
        !           270: #define        U_NUMBER16      (1<<8)          // NUMBER8 is implicit if not set
        !           271: #define        U_ORIGIN3       (1<<9)
        !           272: #define        U_ANGLE1        (1<<10)
        !           273: #define        U_MODEL         (1<<11)
        !           274: #define U_RENDERFX8    (1<<12)         // fullbright, etc
        !           275: #define        U_EFFECTS8      (1<<14)         // autorotate, trails, etc
        !           276: #define        U_MOREBITS2     (1<<15)         // read one additional byte
        !           277: 
        !           278: // third byte
        !           279: #define        U_SKIN8         (1<<16)
        !           280: #define        U_FRAME16       (1<<17)         // frame is a short
        !           281: #define        U_RENDERFX16 (1<<18)    // 8 + 16 = 32
        !           282: #define        U_EFFECTS16     (1<<19)         // 8 + 16 = 32
        !           283: #define        U_MODEL2        (1<<20)         // weapons, flags, etc
        !           284: #define        U_MODEL3        (1<<21)
        !           285: #define        U_MODEL4        (1<<22)
        !           286: #define        U_MOREBITS3     (1<<23)         // read one additional byte
        !           287: 
        !           288: // fourth byte
        !           289: #define        U_OLDORIGIN     (1<<24)         // FIXME: get rid of this
        !           290: #define        U_SKIN16        (1<<25)
        !           291: #define        U_SOUND         (1<<26)
        !           292: #define        U_SOLID         (1<<27)
        !           293: 
        !           294: 
        !           295: /*
        !           296: ==============================================================
        !           297: 
        !           298: CMD
        !           299: 
        !           300: Command text buffering and command execution
        !           301: 
        !           302: ==============================================================
        !           303: */
        !           304: 
        !           305: /*
        !           306: 
        !           307: Any number of commands can be added in a frame, from several different sources.
        !           308: Most commands come from either keybindings or console line input, but remote
        !           309: servers can also send across commands and entire text files can be execed.
        !           310: 
        !           311: The + command line options are also added to the command buffer.
        !           312: 
        !           313: The game starts with a Cbuf_AddText ("exec quake.rc\n"); Cbuf_Execute ();
        !           314: 
        !           315: */
        !           316: 
        !           317: #define        EXEC_NOW        0               // don't return until completed
        !           318: #define        EXEC_INSERT     1               // insert at current position, but don't run yet
        !           319: #define        EXEC_APPEND     2               // add to end of the command buffer
        !           320: 
        !           321: void Cbuf_Init (void);
        !           322: // allocates an initial text buffer that will grow as needed
        !           323: 
        !           324: void Cbuf_AddText (char *text);
        !           325: // as new commands are generated from the console or keybindings,
        !           326: // the text is added to the end of the command buffer.
        !           327: 
        !           328: void Cbuf_InsertText (char *text);
        !           329: // when a command wants to issue other commands immediately, the text is
        !           330: // inserted at the beginning of the buffer, before any remaining unexecuted
        !           331: // commands.
        !           332: 
        !           333: void Cbuf_ExecuteText (int exec_when, char *text);
        !           334: // this can be used in place of either Cbuf_AddText or Cbuf_InsertText
        !           335: 
        !           336: void Cbuf_AddEarlyCommands (qboolean clear);
        !           337: // adds all the +set commands from the command line
        !           338: 
        !           339: qboolean Cbuf_AddLateCommands (void);
        !           340: // adds all the remaining + commands from the command line
        !           341: // Returns true if any late commands were added, which
        !           342: // will keep the demoloop from immediately starting
        !           343: 
        !           344: void Cbuf_Execute (void);
        !           345: // Pulls off \n terminated lines of text from the command buffer and sends
        !           346: // them through Cmd_ExecuteString.  Stops when the buffer is empty.
        !           347: // Normally called once per frame, but may be explicitly invoked.
        !           348: // Do not call inside a command function!
        !           349: 
        !           350: void Cbuf_CopyToDefer (void);
        !           351: void Cbuf_InsertFromDefer (void);
        !           352: // These two functions are used to defer any pending commands while a map
        !           353: // is being loaded
        !           354: 
        !           355: //===========================================================================
        !           356: 
        !           357: /*
        !           358: 
        !           359: Command execution takes a null terminated string, breaks it into tokens,
        !           360: then searches for a command or variable that matches the first token.
        !           361: 
        !           362: */
        !           363: 
        !           364: typedef void (*xcommand_t) (void);
        !           365: 
        !           366: void   Cmd_Init (void);
        !           367: 
        !           368: void   Cmd_AddCommand (char *cmd_name, xcommand_t function);
        !           369: // called by the init functions of other parts of the program to
        !           370: // register commands and functions to call for them.
        !           371: // The cmd_name is referenced later, so it should not be in temp memory
        !           372: // if function is NULL, the command will be forwarded to the server
        !           373: // as a clc_stringcmd instead of executed locally
        !           374: void   Cmd_RemoveCommand (char *cmd_name);
        !           375: 
        !           376: qboolean Cmd_Exists (char *cmd_name);
        !           377: // used by the cvar code to check for cvar / command name overlap
        !           378: 
        !           379: char   *Cmd_CompleteCommand (char *partial);
        !           380: // attempts to match a partial command for automatic command line completion
        !           381: // returns NULL if nothing fits
        !           382: 
        !           383: int            Cmd_Argc (void);
        !           384: char   *Cmd_Argv (int arg);
        !           385: char   *Cmd_Args (void);
        !           386: // The functions that execute commands get their parameters with these
        !           387: // functions. Cmd_Argv () will return an empty string, not a NULL
        !           388: // if arg > argc, so string operations are allways safe.
        !           389: 
        !           390: void   Cmd_TokenizeString (char *text, qboolean macroExpand);
        !           391: // Takes a null terminated string.  Does not need to be /n terminated.
        !           392: // breaks the string up into arg tokens.
        !           393: 
        !           394: void   Cmd_ExecuteString (char *text);
        !           395: // Parses a single line of text into arguments and tries to execute it
        !           396: // as if it was typed at the console
        !           397: 
        !           398: void   Cmd_ForwardToServer (void);
        !           399: // adds the current command line as a clc_stringcmd to the client message.
        !           400: // things like godmode, noclip, etc, are commands directed to the server,
        !           401: // so when they are typed in at the console, they will need to be forwarded.
        !           402: 
        !           403: 
        !           404: /*
        !           405: ==============================================================
        !           406: 
        !           407: CVAR
        !           408: 
        !           409: ==============================================================
        !           410: */
        !           411: 
        !           412: /*
        !           413: 
        !           414: cvar_t variables are used to hold scalar or string variables that can be changed or displayed at the console or prog code as well as accessed directly
        !           415: in C code.
        !           416: 
        !           417: The user can access cvars from the console in three ways:
        !           418: r_draworder                    prints the current value
        !           419: r_draworder 0          sets the current value to 0
        !           420: set r_draworder 0      as above, but creates the cvar if not present
        !           421: Cvars are restricted from having the same names as commands to keep this
        !           422: interface from being ambiguous.
        !           423: */
        !           424: 
        !           425: extern cvar_t  *cvar_vars;
        !           426: 
        !           427: cvar_t *Cvar_Get (char *var_name, char *value, int flags);
        !           428: // creates the variable if it doesn't exist, or returns the existing one
        !           429: // if it exists, the value will not be changed, but flags will be ORed in
        !           430: // that allows variables to be unarchived without needing bitflags
        !           431: 
        !           432: cvar_t         *Cvar_Set (char *var_name, char *value);
        !           433: // will create the variable if it doesn't exist
        !           434: 
        !           435: cvar_t *Cvar_ForceSet (char *var_name, char *value);
        !           436: // will set the variable even if NOSET or LATCH
        !           437: 
        !           438: cvar_t         *Cvar_FullSet (char *var_name, char *value, int flags);
        !           439: 
        !           440: void   Cvar_SetValue (char *var_name, float value);
        !           441: // expands value to a string and calls Cvar_Set
        !           442: 
        !           443: float  Cvar_VariableValue (char *var_name);
        !           444: // returns 0 if not defined or non numeric
        !           445: 
        !           446: char   *Cvar_VariableString (char *var_name);
        !           447: // returns an empty string if not defined
        !           448: 
        !           449: char   *Cvar_CompleteVariable (char *partial);
        !           450: // attempts to match a partial variable name for command line completion
        !           451: // returns NULL if nothing fits
        !           452: 
        !           453: void   Cvar_GetLatchedVars (void);
        !           454: // any CVAR_LATCHED variables that have been set will now take effect
        !           455: 
        !           456: qboolean Cvar_Command (void);
        !           457: // called by Cmd_ExecuteString when Cmd_Argv(0) doesn't match a known
        !           458: // command.  Returns true if the command was a variable reference that
        !           459: // was handled. (print or change)
        !           460: 
        !           461: void   Cvar_WriteVariables (char *path);
        !           462: // appends lines containing "set variable value" for all variables
        !           463: // with the archive flag set to true.
        !           464: 
        !           465: void   Cvar_Init (void);
        !           466: 
        !           467: char   *Cvar_Userinfo (void);
        !           468: // returns an info string containing all the CVAR_USERINFO cvars
        !           469: 
        !           470: char   *Cvar_Serverinfo (void);
        !           471: // returns an info string containing all the CVAR_SERVERINFO cvars
        !           472: 
        !           473: extern qboolean        userinfo_modified;
        !           474: // this is set each time a CVAR_USERINFO variable is changed
        !           475: // so that the client knows to send it to the server
        !           476: 
        !           477: /*
        !           478: ==============================================================
        !           479: 
        !           480: NET
        !           481: 
        !           482: ==============================================================
        !           483: */
        !           484: 
        !           485: // net.h -- quake's interface to the networking layer
        !           486: 
        !           487: #define        PORT_ANY        -1
        !           488: 
        !           489: #define        MAX_MSGLEN              1400            // max length of a message
        !           490: #define        PACKET_HEADER   10                      // two ints and a short
        !           491: 
        !           492: typedef enum {NA_LOOPBACK, NA_BROADCAST, NA_IP, NA_IPX, NA_BROADCAST_IPX} netadrtype_t;
        !           493: 
        !           494: typedef enum {NS_CLIENT, NS_SERVER} netsrc_t;
        !           495: 
        !           496: typedef struct
        !           497: {
        !           498:        netadrtype_t    type;
        !           499: 
        !           500:        byte    ip[4];
        !           501:        byte    ipx[10];
        !           502: 
        !           503:        unsigned short  port;
        !           504: } netadr_t;
        !           505: 
        !           506: void           NET_Init (void);
        !           507: void           NET_Shutdown (void);
        !           508: 
        !           509: void           NET_Config (qboolean multiplayer);
        !           510: 
        !           511: qboolean       NET_GetPacket (netsrc_t sock, netadr_t *net_from, sizebuf_t *net_message);
        !           512: void           NET_SendPacket (netsrc_t sock, int length, void *data, netadr_t to);
        !           513: 
        !           514: qboolean       NET_CompareAdr (netadr_t a, netadr_t b);
        !           515: qboolean       NET_CompareBaseAdr (netadr_t a, netadr_t b);
        !           516: qboolean       NET_IsLocalAddress (netadr_t adr);
        !           517: char           *NET_AdrToString (netadr_t a);
        !           518: qboolean       NET_StringToAdr (char *s, netadr_t *a);
        !           519: 
        !           520: //============================================================================
        !           521: 
        !           522: #define        OLD_AVG         0.99            // total = oldtotal*OLD_AVG + new*(1-OLD_AVG)
        !           523: 
        !           524: #define        MAX_LATENT      32
        !           525: 
        !           526: typedef struct
        !           527: {
        !           528:        qboolean        fatal_error;
        !           529: 
        !           530:        netsrc_t        sock;
        !           531: 
        !           532:        int                     dropped;                        // between last packet and previous
        !           533: 
        !           534:        int                     last_received;          // for timeouts
        !           535:        int                     last_sent;                      // for retransmits
        !           536: 
        !           537:        netadr_t        remote_address;
        !           538:        int                     qport;                          // qport value to write when transmitting
        !           539: 
        !           540: // sequencing variables
        !           541:        int                     incoming_sequence;
        !           542:        int                     incoming_acknowledged;
        !           543:        int                     incoming_reliable_acknowledged; // single bit
        !           544: 
        !           545:        int                     incoming_reliable_sequence;             // single bit, maintained local
        !           546: 
        !           547:        int                     outgoing_sequence;
        !           548:        int                     reliable_sequence;                      // single bit
        !           549:        int                     last_reliable_sequence;         // sequence number of last send
        !           550: 
        !           551: // reliable staging and holding areas
        !           552:        sizebuf_t       message;                // writing buffer to send to server
        !           553:        byte            message_buf[MAX_MSGLEN-16];             // leave space for header
        !           554: 
        !           555: // message is copied to this buffer when it is first transfered
        !           556:        int                     reliable_length;
        !           557:        byte            reliable_buf[MAX_MSGLEN-16];    // unacked reliable message
        !           558: } netchan_t;
        !           559: 
        !           560: extern netadr_t        net_from;
        !           561: extern sizebuf_t       net_message;
        !           562: extern byte            net_message_buffer[MAX_MSGLEN];
        !           563: 
        !           564: 
        !           565: void Netchan_Init (void);
        !           566: void Netchan_Setup (netsrc_t sock, netchan_t *chan, netadr_t adr, int qport);
        !           567: 
        !           568: qboolean Netchan_NeedReliable (netchan_t *chan);
        !           569: void Netchan_Transmit (netchan_t *chan, int length, byte *data);
        !           570: void Netchan_OutOfBand (int net_socket, netadr_t adr, int length, byte *data);
        !           571: void Netchan_OutOfBandPrint (int net_socket, netadr_t adr, char *format, ...);
        !           572: qboolean Netchan_Process (netchan_t *chan, sizebuf_t *msg);
        !           573: 
        !           574: qboolean Netchan_CanReliable (netchan_t *chan);
        !           575: 
        !           576: 
        !           577: /*
        !           578: ==============================================================
        !           579: 
        !           580: CMODEL
        !           581: 
        !           582: ==============================================================
        !           583: */
        !           584: 
        !           585: 
        !           586: #include "../qcommon/qfiles.h"
        !           587: 
        !           588: cmodel_t       *CM_LoadMap (char *name, qboolean clientload, unsigned *checksum);
        !           589: cmodel_t       *CM_InlineModel (char *name);   // *1, *2, etc
        !           590: 
        !           591: int                    CM_NumClusters (void);
        !           592: int                    CM_NumInlineModels (void);
        !           593: char           *CM_EntityString (void);
        !           594: 
        !           595: // creates a clipping hull for an arbitrary box
        !           596: int                    CM_HeadnodeForBox (vec3_t mins, vec3_t maxs);
        !           597: 
        !           598: 
        !           599: // returns an ORed contents mask
        !           600: int                    CM_PointContents (vec3_t p, int headnode);
        !           601: int                    CM_TransformedPointContents (vec3_t p, int headnode, vec3_t origin, vec3_t angles);
        !           602: 
        !           603: trace_t                CM_BoxTrace (vec3_t start, vec3_t end,
        !           604:                                                  vec3_t mins, vec3_t maxs,
        !           605:                                                  int headnode, int brushmask);
        !           606: trace_t                CM_TransformedBoxTrace (vec3_t start, vec3_t end,
        !           607:                                                  vec3_t mins, vec3_t maxs,
        !           608:                                                  int headnode, int brushmask,
        !           609:                                                  vec3_t origin, vec3_t angles);
        !           610: 
        !           611: byte           *CM_ClusterPVS (int cluster);
        !           612: byte           *CM_ClusterPHS (int cluster);
        !           613: 
        !           614: int                    CM_PointLeafnum (vec3_t p);
        !           615: 
        !           616: // call with topnode set to the headnode, returns with topnode
        !           617: // set to the first node that splits the box
        !           618: int                    CM_BoxLeafnums (vec3_t mins, vec3_t maxs, int *list,
        !           619:                                                        int listsize, int *topnode);
        !           620: 
        !           621: int                    CM_LeafContents (int leafnum);
        !           622: int                    CM_LeafCluster (int leafnum);
        !           623: int                    CM_LeafArea (int leafnum);
        !           624: 
        !           625: void           CM_SetAreaPortalState (int portalnum, qboolean open);
        !           626: qboolean       CM_AreasConnected (int area1, int area2);
        !           627: 
        !           628: int                    CM_WriteAreaBits (byte *buffer, int area);
        !           629: qboolean       CM_HeadnodeVisible (int headnode, byte *visbits);
        !           630: 
        !           631: void           CM_WritePortalState (FILE *f);
        !           632: void           CM_ReadPortalState (FILE *f);
        !           633: 
        !           634: /*
        !           635: ==============================================================
        !           636: 
        !           637: PLAYER MOVEMENT CODE
        !           638: 
        !           639: Common between server and client so prediction matches
        !           640: 
        !           641: ==============================================================
        !           642: */
        !           643: 
        !           644: void Pmove (pmove_t *pmove);
        !           645: 
        !           646: /*
        !           647: ==============================================================
        !           648: 
        !           649: FILESYSTEM
        !           650: 
        !           651: ==============================================================
        !           652: */
        !           653: 
        !           654: void   FS_InitFilesystem (void);
        !           655: void   FS_SetGamedir (char *dir);
        !           656: char   *FS_Gamedir (void);
        !           657: char   *FS_NextPath (char *prevpath);
        !           658: void   FS_ExecAutoexec (void);
        !           659: 
        !           660: int            FS_FOpenFile (char *filename, FILE **file);
        !           661: void   FS_FCloseFile (FILE *f);
        !           662: // note: this can't be called from another DLL, due to MS libc issues
        !           663: 
        !           664: int            FS_LoadFile (char *path, void **buffer);
        !           665: // a null buffer will just return the file length without loading
        !           666: // a -1 length is not present
        !           667: 
        !           668: void   FS_Read (void *buffer, int len, FILE *f);
        !           669: // properly handles partial reads
        !           670: 
        !           671: void   FS_FreeFile (void *buffer);
        !           672: 
        !           673: void   FS_CreatePath (char *path);
        !           674: 
        !           675: 
        !           676: /*
        !           677: ==============================================================
        !           678: 
        !           679: MISC
        !           680: 
        !           681: ==============================================================
        !           682: */
        !           683: 
        !           684: 
        !           685: #define        ERR_FATAL       0               // exit the entire game with a popup window
        !           686: #define        ERR_DROP        1               // print to console and disconnect from game
        !           687: #define        ERR_QUIT        2               // not an error, just a normal exit
        !           688: 
        !           689: #define        EXEC_NOW        0               // don't return until completed
        !           690: #define        EXEC_INSERT     1               // insert at current position, but don't run yet
        !           691: #define        EXEC_APPEND     2               // add to end of the command buffer
        !           692: 
        !           693: #define        PRINT_ALL               0
        !           694: #define PRINT_DEVELOPER        1       // only print when "developer 1"
        !           695: 
        !           696: void           Com_BeginRedirect (int target, char *buffer, int buffersize, void (*flush));
        !           697: void           Com_EndRedirect (void);
        !           698: void           Com_Printf (char *fmt, ...);
        !           699: void           Com_DPrintf (char *fmt, ...);
        !           700: void           Com_Error (int code, char *fmt, ...);
        !           701: void           Com_Quit (void);
        !           702: 
        !           703: int                    Com_ServerState (void);         // this should have just been a cvar...
        !           704: void           Com_SetServerState (int state);
        !           705: 
        !           706: unsigned       Com_BlockChecksum (void *buffer, int length);
        !           707: byte           COM_BlockSequenceCheckByte (byte *base, int length, int sequence);
        !           708: 
        !           709: float  frand(void);    // 0 ti 1
        !           710: float  crand(void);    // -1 to 1
        !           711: 
        !           712: extern cvar_t  *developer;
        !           713: extern cvar_t  *dedicated;
        !           714: extern cvar_t  *host_speeds;
        !           715: extern cvar_t  *log_stats;
        !           716: 
        !           717: extern FILE *log_stats_file;
        !           718: 
        !           719: // host_speeds times
        !           720: extern int             time_before_game;
        !           721: extern int             time_after_game;
        !           722: extern int             time_before_ref;
        !           723: extern int             time_after_ref;
        !           724: 
        !           725: void Z_Free (void *ptr);
        !           726: void *Z_Malloc (int size);                     // returns 0 filled memory
        !           727: void *Z_TagMalloc (int size, int tag);
        !           728: void Z_FreeTags (int tag);
        !           729: 
        !           730: void Qcommon_Init (int argc, char **argv);
        !           731: void Qcommon_Frame (int msec);
        !           732: void Qcommon_Shutdown (void);
        !           733: 
        !           734: #define NUMVERTEXNORMALS       162
        !           735: extern vec3_t  bytedirs[NUMVERTEXNORMALS];
        !           736: 
        !           737: // this is in the client code, but can be used for debugging from server
        !           738: void SCR_DebugGraph (float value, int color);
        !           739: 
        !           740: 
        !           741: /*
        !           742: ==============================================================
        !           743: 
        !           744: NON-PORTABLE SYSTEM SERVICES
        !           745: 
        !           746: ==============================================================
        !           747: */
        !           748: 
        !           749: void   Sys_Init (void);
        !           750: 
        !           751: void   Sys_AppActivate (void);
        !           752: 
        !           753: void   Sys_UnloadGame (void);
        !           754: void   *Sys_GetGameAPI (void *parms);
        !           755: // loads the game dll and calls the api init function
        !           756: 
        !           757: char   *Sys_ConsoleInput (void);
        !           758: void   Sys_ConsoleOutput (char *string);
        !           759: void   Sys_SendKeyEvents (void);
        !           760: void   Sys_Error (char *error, ...);
        !           761: void   Sys_Quit (void);
        !           762: char   *Sys_GetClipboardData( void );
        !           763: void   Sys_CopyProtect (void);
        !           764: 
        !           765: /*
        !           766: ==============================================================
        !           767: 
        !           768: CLIENT / SERVER SYSTEMS
        !           769: 
        !           770: ==============================================================
        !           771: */
        !           772: 
        !           773: void CL_Init (void);
        !           774: void CL_Drop (void);
        !           775: void CL_Shutdown (void);
        !           776: void CL_Frame (int msec);
        !           777: void Con_Print (char *text);
        !           778: void SCR_BeginLoadingPlaque (void);
        !           779: 
        !           780: void SV_Init (void);
        !           781: void SV_Shutdown (char *finalmsg, qboolean reconnect);
        !           782: void SV_Frame (int msec);
        !           783: 
        !           784: 
        !           785: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.