Erster Schritt im Aufräumen des Headers

This commit is contained in:
Yamagi Burmeister 2010-06-19 19:58:06 +00:00
parent 33cae7f36a
commit 65230953f0

View file

@ -1,25 +1,28 @@
/* /*
Copyright (C) 1997-2001 Id Software, Inc. * Copyright (C) 1997-2001 Id Software, Inc.
*
This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or modify
modify it under the terms of the GNU General Public License * it under the terms of the GNU General Public License as published by
as published by the Free Software Foundation; either version 2 * the Free Software Foundation; either version 2 of the License, or (at
of the License, or (at your option) any later version. * your option) any later version.
*
This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful, but
but WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
See the GNU General Public License for more details. * See the GNU General Public License for more details.
*
You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*/ *
// client.h -- primary header for client * =======================================================================
*
//define PARANOID // speed sapping error checking * Main header for the client
*
* =======================================================================
*/
#ifdef __x86_64__ #ifdef __x86_64__
#define INT long int #define INT long int
@ -38,63 +41,64 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "vid.h" #include "vid.h"
#include "screen.h" #include "screen.h"
#include "../console/header/console.h"
#include "../input/header/input.h" #include "../input/header/input.h"
#include "../input/header/keyboard.h" #include "../input/header/keyboard.h"
#include "../console/header/console.h"
#include "../sound/header/cdaudio.h" #include "../sound/header/cdaudio.h"
#include "../sound/header/sound.h" #include "../sound/header/sound.h"
#include "../sound/header/vorbis.h" #include "../sound/header/vorbis.h"
//=============================================================================
typedef struct typedef struct
{ {
qboolean valid; // cleared if delta parsing was invalid qboolean valid; /* cleared if delta parsing was invalid */
int serverframe; int serverframe;
int servertime; // server time the message is valid for (in msec) int servertime; /* server time the message is valid for (in msec) */
int deltaframe; int deltaframe;
byte areabits[MAX_MAP_AREAS/8]; // portalarea visibility bits byte areabits[MAX_MAP_AREAS/8]; /* portalarea visibility bits */
player_state_t playerstate; player_state_t playerstate;
int num_entities; int num_entities;
int parse_entities; // non-masked index into cl_parse_entities array int parse_entities; /* non-masked index into cl_parse_entities array */
} frame_t; } frame_t;
typedef struct typedef struct
{ {
entity_state_t baseline; // delta from this if not from a previous frame entity_state_t baseline; /* delta from this if not from a previous frame */
entity_state_t current; entity_state_t current;
entity_state_t prev; // will always be valid, but might just be a copy of current entity_state_t prev; /* will always be valid, but might just be a copy of current */
int serverframe; // if not current, this ent isn't in the frame int serverframe; /* if not current, this ent isn't in the frame */
int trailcount; // for diminishing grenade trails int trailcount; /* for diminishing grenade trails */
vec3_t lerp_origin; // for trails (variable hz) vec3_t lerp_origin; /* for trails (variable hz) */
int fly_stoptime; int fly_stoptime;
} centity_t; } centity_t;
#define MAX_CLIENTWEAPONMODELS 20 // PGM -- upped from 16 to fit the chainfist vwep #define MAX_CLIENTWEAPONMODELS 20
typedef struct typedef struct
{ {
char name[MAX_QPATH]; char name[MAX_QPATH];
char cinfo[MAX_QPATH]; char cinfo[MAX_QPATH];
struct image_s *skin; struct image_s *skin;
struct image_s *icon; struct image_s *icon;
char iconname[MAX_QPATH]; char iconname[MAX_QPATH];
struct model_s *model; struct model_s *model;
struct model_s *weaponmodel[MAX_CLIENTWEAPONMODELS]; struct model_s *weaponmodel[MAX_CLIENTWEAPONMODELS];
} clientinfo_t; } clientinfo_t;
extern char cl_weaponmodels[MAX_CLIENTWEAPONMODELS][MAX_QPATH]; extern char cl_weaponmodels[MAX_CLIENTWEAPONMODELS][MAX_QPATH];
extern int num_cl_weaponmodels; extern int num_cl_weaponmodels;
#define CMD_BACKUP 64 // allow a lot of command backups for very fast systems #define CMD_BACKUP 4 /* allow a lot of command backups for very fast systems */
/* the client_state_t structure is wiped
completely at every server map change */
//
// the client_state_t structure is wiped completely at every
// server map change
//
typedef struct typedef struct
{ {
int timeoutcount; int timeoutcount;
@ -102,75 +106,69 @@ typedef struct
int timedemo_frames; int timedemo_frames;
int timedemo_start; int timedemo_start;
qboolean refresh_prepped; // false if on new level or new ref dll qboolean refresh_prepped; /* false if on new level or new ref dll */
qboolean sound_prepped; // ambient sounds can start qboolean sound_prepped; /* ambient sounds can start */
qboolean force_refdef; // vid has changed, so we can't use a paused refdef qboolean force_refdef; /* vid has changed, so we can't use a paused refdef */
int parse_entities; // index (not anded off) into cl_parse_entities[] int parse_entities; /* index (not anded off) into cl_parse_entities[] */
usercmd_t cmd; usercmd_t cmd;
usercmd_t cmds[CMD_BACKUP]; // each mesage will send several old cmds usercmd_t cmds[CMD_BACKUP]; /* each mesage will send several old cmds */
int cmd_time[CMD_BACKUP]; // time sent, for calculating pings int cmd_time[CMD_BACKUP]; /* time sent, for calculating pings */
short predicted_origins[CMD_BACKUP][3]; // for debug comparing against server short predicted_origins[CMD_BACKUP][3]; /* for debug comparing against server */
float predicted_step; // for stair up smoothing float predicted_step; /* for stair up smoothing */
unsigned predicted_step_time; unsigned predicted_step_time;
vec3_t predicted_origin; // generated by CL_PredictMovement vec3_t predicted_origin; /* generated by CL_PredictMovement */
vec3_t predicted_angles; vec3_t predicted_angles;
vec3_t prediction_error; vec3_t prediction_error;
frame_t frame; // received from server frame_t frame; /* received from server */
int surpressCount; // number of messages rate supressed int surpressCount; /* number of messages rate supressed */
frame_t frames[UPDATE_BACKUP]; frame_t frames[UPDATE_BACKUP];
// the client maintains its own idea of view angles, which are /* the client maintains its own idea of view angles, which are
// sent to the server each frame. It is cleared to 0 upon entering each level. sent to the server each frame. It is cleared to 0 upon entering each level.
// the server sends a delta each frame which is added to the locally the server sends a delta each frame which is added to the locally
// tracked view angles to account for standing on rotating objects, tracked view angles to account for standing on rotating objects,
// and teleport direction changes and teleport direction changes */
vec3_t viewangles; vec3_t viewangles;
int time; // this is the time value that the client int time; /* this is the time value that the client is rendering at. always <= cls.realtime */
// is rendering at. always <= cls.realtime float lerpfrac; /* between oldframe and frame */
float lerpfrac; // between oldframe and frame
refdef_t refdef; refdef_t refdef;
vec3_t v_forward, v_right, v_up; // set when refdef.angles is set vec3_t v_forward, v_right, v_up; /* set when refdef.angles is set */
// /* transient data from server */
// transient data from server char layout[1024]; /* general 2D overlay */
//
char layout[1024]; // general 2D overlay
int inventory[MAX_ITEMS]; int inventory[MAX_ITEMS];
// /* non-gameserver infornamtion */
// non-gameserver infornamtion
// FIXME: move this cinematic stuff into the cin_t structure
fileHandle_t cinematic_file; fileHandle_t cinematic_file;
int cinematictime; // cls.realtime for first cinematic frame int cinematictime; /* cls.realtime for first cinematic frame */
int cinematicframe; int cinematicframe;
unsigned char cinematicpalette[768]; unsigned char cinematicpalette[768];
qboolean cinematicpalette_active; qboolean cinematicpalette_active;
// /* server state information */
// server state information qboolean attractloop; /* running the attract loop, any key will menu */
// int servercount; /* server identification for prespawns */
qboolean attractloop; // running the attract loop, any key will menu
int servercount; // server identification for prespawns
char gamedir[MAX_QPATH]; char gamedir[MAX_QPATH];
int playernum; int playernum;
char configstrings[MAX_CONFIGSTRINGS][MAX_QPATH]; char configstrings[MAX_CONFIGSTRINGS][MAX_QPATH];
// /* locally derived information from server state */
// locally derived information from server state
//
struct model_s *model_draw[MAX_MODELS]; struct model_s *model_draw[MAX_MODELS];
struct cmodel_s *model_clip[MAX_MODELS]; struct cmodel_s *model_clip[MAX_MODELS];
struct sfx_s *sound_precache[MAX_SOUNDS]; struct sfx_s *sound_precache[MAX_SOUNDS];
struct image_s *image_precache[MAX_IMAGES]; struct image_s *image_precache[MAX_IMAGES];
clientinfo_t clientinfo[MAX_CLIENTS]; clientinfo_t clientinfo[MAX_CLIENTS];
@ -179,30 +177,25 @@ typedef struct
extern client_state_t cl; extern client_state_t cl;
/* /* the client_static_t structure is persistant through
================================================================== an arbitrary number of server connections */
typedef enum
the client_static_t structure is persistant through an arbitrary number {
of server connections
==================================================================
*/
typedef enum {
ca_uninitialized, ca_uninitialized,
ca_disconnected, // not talking to a server ca_disconnected, /* not talking to a server */
ca_connecting, // sending request packets to the server ca_connecting, /* sending request packets to the server */
ca_connected, // netchan_t established, waiting for svc_serverdata ca_connected, /* netchan_t established, waiting for svc_serverdata */
ca_active // game views should be displayed ca_active /* game views should be displayed */
} connstate_t; } connstate_t;
typedef enum { typedef enum
{
dl_none, dl_none,
dl_model, dl_model,
dl_sound, dl_sound,
dl_skin, dl_skin,
dl_single dl_single
} dltype_t; // download type } dltype_t;
typedef enum {key_game, key_console, key_message, key_menu} keydest_t; typedef enum {key_game, key_console, key_message, key_menu} keydest_t;
@ -212,50 +205,46 @@ typedef struct
keydest_t key_dest; keydest_t key_dest;
int framecount; int framecount;
int realtime; // always increasing, no clamping, etc int realtime; /* always increasing, no clamping, etc */
float frametime; // seconds since last frame float frametime; /* seconds since last frame */
// screen rendering information /* screen rendering information */
float disable_screen; // showing loading plaque between levels float disable_screen; /* showing loading plaque between levels */
// or changing rendering dlls /* or changing rendering dlls */
// if time gets > 30 seconds ahead, break it
int disable_servercount; // when we receive a frame and cl.servercount /* if time gets > 30 seconds ahead, break it */
// > cls.disable_servercount, clear disable_screen int disable_servercount; /* when we receive a frame and cl.servercount */
/* > cls.disable_servercount, clear disable_screen */
// connection information /* connection information */
char servername[MAX_OSPATH]; // name of server from original connect char servername[MAX_OSPATH]; /* name of server from original connect */
float connect_time; // for connection retransmits float connect_time; /* for connection retransmits */
int quakePort; // a 16 bit value that allows quake servers int quakePort; /* a 16 bit value that allows quake servers */
// to work around address translating routers /* to work around address translating routers */
netchan_t netchan; netchan_t netchan;
int serverProtocol; // in case we are doing some kind of version hack int serverProtocol; /* in case we are doing some kind of version hack */
int challenge; // from the server to use for connecting int challenge; /* from the server to use for connecting */
FILE *download; // file transfer from server FILE *download; /* file transfer from server */
char downloadtempname[MAX_OSPATH]; char downloadtempname[MAX_OSPATH];
char downloadname[MAX_OSPATH]; char downloadname[MAX_OSPATH];
int downloadnumber; int downloadnumber;
dltype_t downloadtype; dltype_t downloadtype;
int downloadpercent; int downloadpercent;
// demo recording info must be here, so it isn't cleared on level change /* demo recording info must be here, so it isn't cleared on level change */
qboolean demorecording; qboolean demorecording;
qboolean demowaiting; // don't record until a non-delta message is received qboolean demowaiting; /* don't record until a non-delta message is received */
FILE *demofile; FILE *demofile;
} client_static_t; } client_static_t;
extern client_static_t cls; extern client_static_t cls;
//============================================================================= /* cvars */
//
// cvars
//
extern cvar_t *cl_stereo_separation; extern cvar_t *cl_stereo_separation;
extern cvar_t *cl_stereo; extern cvar_t *cl_stereo;
extern cvar_t *cl_gun; extern cvar_t *cl_gun;
extern cvar_t *cl_add_blend; extern cvar_t *cl_add_blend;
extern cvar_t *cl_add_lights; extern cvar_t *cl_add_lights;
@ -265,72 +254,59 @@ extern cvar_t *cl_predict;
extern cvar_t *cl_footsteps; extern cvar_t *cl_footsteps;
extern cvar_t *cl_noskins; extern cvar_t *cl_noskins;
extern cvar_t *cl_autoskins; extern cvar_t *cl_autoskins;
extern cvar_t *cl_upspeed; extern cvar_t *cl_upspeed;
extern cvar_t *cl_forwardspeed; extern cvar_t *cl_forwardspeed;
extern cvar_t *cl_sidespeed; extern cvar_t *cl_sidespeed;
extern cvar_t *cl_yawspeed; extern cvar_t *cl_yawspeed;
extern cvar_t *cl_pitchspeed; extern cvar_t *cl_pitchspeed;
extern cvar_t *cl_run; extern cvar_t *cl_run;
extern cvar_t *cl_anglespeedkey; extern cvar_t *cl_anglespeedkey;
extern cvar_t *cl_shownet; extern cvar_t *cl_shownet;
extern cvar_t *cl_showmiss; extern cvar_t *cl_showmiss;
extern cvar_t *cl_showclamp; extern cvar_t *cl_showclamp;
extern cvar_t *lookspring; extern cvar_t *lookspring;
extern cvar_t *lookstrafe; extern cvar_t *lookstrafe;
extern cvar_t *sensitivity; extern cvar_t *sensitivity;
extern cvar_t *m_pitch; extern cvar_t *m_pitch;
extern cvar_t *m_yaw; extern cvar_t *m_yaw;
extern cvar_t *m_forward; extern cvar_t *m_forward;
extern cvar_t *m_side; extern cvar_t *m_side;
extern cvar_t *freelook; extern cvar_t *freelook;
extern cvar_t *cl_lightlevel;
extern cvar_t *cl_lightlevel; // FIXME HACK
extern cvar_t *cl_paused; extern cvar_t *cl_paused;
extern cvar_t *cl_timedemo; extern cvar_t *cl_timedemo;
extern cvar_t *cl_vwep; extern cvar_t *cl_vwep;
typedef struct typedef struct
{ {
int key; // so entities can reuse same entry int key; /* so entities can reuse same entry */
vec3_t color; vec3_t color;
vec3_t origin; vec3_t origin;
float radius; float radius;
float die; // stop lighting after this time float die; /* stop lighting after this time */
float decay; // drop this each second float decay; /* drop this each second */
float minlight; // don't add when contributing less float minlight; /* don't add when contributing less */
} cdlight_t; } cdlight_t;
extern centity_t cl_entities[MAX_EDICTS]; extern centity_t cl_entities[MAX_EDICTS];
extern cdlight_t cl_dlights[MAX_DLIGHTS]; extern cdlight_t cl_dlights[MAX_DLIGHTS];
// the cl_parse_entities must be large enough to hold UPDATE_BACKUP frames of /* the cl_parse_entities must be large enough to hold UPDATE_BACKUP frames of
// entities, so that when a delta compressed message arives from the server entities, so that when a delta compressed message arives from the server
// it can be un-deltad from the original it can be un-deltad from the original */
#define MAX_PARSE_ENTITIES 1024 #define MAX_PARSE_ENTITIES 1024
extern entity_state_t cl_parse_entities[MAX_PARSE_ENTITIES]; extern entity_state_t cl_parse_entities[MAX_PARSE_ENTITIES];
//=============================================================================
extern netadr_t net_from; extern netadr_t net_from;
extern sizebuf_t net_message; extern sizebuf_t net_message;
void DrawString (int x, int y, char *s); void DrawString (int x, int y, char *s);
void DrawAltString (int x, int y, char *s); // toggle high bit void DrawAltString (int x, int y, char *s); /* toggle high bit */
qboolean CL_CheckOrDownloadFile (char *filename); qboolean CL_CheckOrDownloadFile (char *filename);
void CL_AddNetgraph (void); void CL_AddNetgraph (void);
//ROGUE
typedef struct cl_sustain typedef struct cl_sustain
{ {
int id; int id;
@ -353,16 +329,12 @@ void CL_TeleporterParticles (entity_state_t *ent);
void CL_ParticleEffect (vec3_t org, vec3_t dir, int color, int count); void CL_ParticleEffect (vec3_t org, vec3_t dir, int color, int count);
void CL_ParticleEffect2 (vec3_t org, vec3_t dir, int color, int count); void CL_ParticleEffect2 (vec3_t org, vec3_t dir, int color, int count);
// RAFAEL
void CL_ParticleEffect3 (vec3_t org, vec3_t dir, int color, int count); void CL_ParticleEffect3 (vec3_t org, vec3_t dir, int color, int count);
//=================================================
// ========
// PGM
typedef struct particle_s typedef struct particle_s
{ {
struct particle_s *next; struct particle_s *next;
float time; float time;
@ -377,12 +349,9 @@ typedef struct particle_s
} cparticle_t; } cparticle_t;
#define PARTICLE_GRAVITY 40 #define PARTICLE_GRAVITY 40
#define BLASTER_PARTICLE_COLOR 0xe0 #define BLASTER_PARTICLE_COLOR 0xe0
// PMM #define INSTANT_PARTICLE -10000.0
#define INSTANT_PARTICLE -10000.0
// PGM
// ========
void CL_ClearEffects (void); void CL_ClearEffects (void);
void CL_ClearTEnts (void); void CL_ClearTEnts (void);
@ -392,11 +361,8 @@ void CL_RailTrail (vec3_t start, vec3_t end);
void CL_BubbleTrail (vec3_t start, vec3_t end); void CL_BubbleTrail (vec3_t start, vec3_t end);
void CL_FlagTrail (vec3_t start, vec3_t end, int color); void CL_FlagTrail (vec3_t start, vec3_t end, int color);
// RAFAEL
void CL_IonripperTrail (vec3_t start, vec3_t end); void CL_IonripperTrail (vec3_t start, vec3_t end);
// ========
// PGM
void CL_BlasterParticles2 (vec3_t org, vec3_t dir, unsigned int color); void CL_BlasterParticles2 (vec3_t org, vec3_t dir, unsigned int color);
void CL_BlasterTrail2 (vec3_t start, vec3_t end); void CL_BlasterTrail2 (vec3_t start, vec3_t end);
void CL_DebugTrail (vec3_t start, vec3_t end); void CL_DebugTrail (vec3_t start, vec3_t end);
@ -419,8 +385,6 @@ void CL_ParticleSmokeEffect (vec3_t org, vec3_t dir, int color, int count, int m
void CL_Widowbeamout (cl_sustain_t *self); void CL_Widowbeamout (cl_sustain_t *self);
void CL_Nukeblast (cl_sustain_t *self); void CL_Nukeblast (cl_sustain_t *self);
void CL_WidowSplash (vec3_t org); void CL_WidowSplash (vec3_t org);
// PGM
// ========
int CL_ParseEntityBits (unsigned *bits); int CL_ParseEntityBits (unsigned *bits);
void CL_ParseDelta (entity_state_t *from, entity_state_t *to, int number, int bits); void CL_ParseDelta (entity_state_t *from, entity_state_t *to, int number, int bits);
@ -443,7 +407,6 @@ void CL_AddDLights (void);
void CL_AddTEnts (void); void CL_AddTEnts (void);
void CL_AddLightStyles (void); void CL_AddLightStyles (void);
//=================================================
void CL_PrepRefresh (void); void CL_PrepRefresh (void);
void CL_RegisterSounds (void); void CL_RegisterSounds (void);
@ -455,10 +418,7 @@ void IN_Accumulate (void);
void CL_ParseLayout (void); void CL_ParseLayout (void);
// extern refexport_t re;
// cl_main
//
extern refexport_t re; // interface to refresh .dll
void CL_Init (void); void CL_Init (void);
@ -470,14 +430,11 @@ void CL_PingServers_f (void);
void CL_Snd_Restart_f (void); void CL_Snd_Restart_f (void);
void CL_RequestNextDownload (void); void CL_RequestNextDownload (void);
//
// cl_input
//
typedef struct typedef struct
{ {
int down[2]; // key nums holding it down int down[2]; /* key nums holding it down */
unsigned downtime; // msec timestamp unsigned downtime; /* msec timestamp */
unsigned msec; // msec down this frame unsigned msec; /* msec down this frame */
int state; int state;
} kbutton_t; } kbutton_t;
@ -502,16 +459,10 @@ void IN_CenterView (void);
float CL_KeyState (kbutton_t *key); float CL_KeyState (kbutton_t *key);
char *Key_KeynumToString (int keynum); char *Key_KeynumToString (int keynum);
//
// cl_demo.c
//
void CL_WriteDemoMessage (void); void CL_WriteDemoMessage (void);
void CL_Stop_f (void); void CL_Stop_f (void);
void CL_Record_f (void); void CL_Record_f (void);
//
// cl_parse.c
//
extern char *svc_strings[256]; extern char *svc_strings[256];
void CL_ParseServerMessage (void); void CL_ParseServerMessage (void);
@ -520,10 +471,8 @@ void SHOWNET(char *s);
void CL_ParseClientinfo (int player); void CL_ParseClientinfo (int player);
void CL_Download_f (void); void CL_Download_f (void);
//
// cl_view.c
//
extern int gun_frame; extern int gun_frame;
extern struct model_s *gun_model; extern struct model_s *gun_model;
void V_Init (void); void V_Init (void);
@ -533,24 +482,15 @@ void V_AddParticle (vec3_t org, unsigned int color, float alpha);
void V_AddLight (vec3_t org, float intensity, float r, float g, float b); void V_AddLight (vec3_t org, float intensity, float r, float g, float b);
void V_AddLightStyle (int style, float r, float g, float b); void V_AddLightStyle (int style, float r, float g, float b);
//
// cl_tent.c
//
void CL_RegisterTEntSounds (void); void CL_RegisterTEntSounds (void);
void CL_RegisterTEntModels (void); void CL_RegisterTEntModels (void);
void CL_SmokeAndFlash(vec3_t origin); void CL_SmokeAndFlash(vec3_t origin);
//
// cl_pred.c
//
void CL_InitPrediction (void); void CL_InitPrediction (void);
void CL_PredictMove (void); void CL_PredictMove (void);
void CL_CheckPredictionError (void); void CL_CheckPredictionError (void);
//
// cl_fx.c
//
cdlight_t *CL_AllocDlight (int key); cdlight_t *CL_AllocDlight (int key);
void CL_BigTeleportParticles (vec3_t org); void CL_BigTeleportParticles (vec3_t org);
void CL_RocketTrail (vec3_t start, vec3_t end, centity_t *old); void CL_RocketTrail (vec3_t start, vec3_t end, centity_t *old);
@ -559,12 +499,8 @@ void CL_FlyEffect (centity_t *ent, vec3_t origin);
void CL_BfgParticles (entity_t *ent); void CL_BfgParticles (entity_t *ent);
void CL_AddParticles (void); void CL_AddParticles (void);
void CL_EntityEvent (entity_state_t *ent); void CL_EntityEvent (entity_state_t *ent);
// RAFAEL
void CL_TrapParticles (entity_t *ent); void CL_TrapParticles (entity_t *ent);
//
// menus
//
void M_Init (void); void M_Init (void);
void M_Keydown (int key); void M_Keydown (int key);
void M_Draw (void); void M_Draw (void);
@ -572,15 +508,8 @@ void M_Menu_Main_f (void);
void M_ForceMenuOff (void); void M_ForceMenuOff (void);
void M_AddToServerList (netadr_t adr, char *info); void M_AddToServerList (netadr_t adr, char *info);
//
// cl_inv.c
//
void CL_ParseInventory (void); void CL_ParseInventory (void);
void CL_KeyInventory (int key); void CL_KeyInventory (int key);
void CL_DrawInventory (void); void CL_DrawInventory (void);
//
// cl_pred.c
//
void CL_PredictMovement (void); void CL_PredictMovement (void);