2007-06-21 22:00:00 +02:00
|
|
|
/*
|
|
|
|
Copyright (C) 1997-2001 Id Software, Inc.
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU General Public License
|
|
|
|
as published by the Free Software Foundation; either version 2
|
|
|
|
of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
|
|
|
|
See the GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program; if not, write to the Free Software
|
|
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
|
|
|
|
*/
|
|
|
|
// client.h -- primary header for client
|
|
|
|
|
2007-11-04 22:00:00 +01:00
|
|
|
#ifndef CLIENT_H
|
|
|
|
#define CLIENT_H
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2008-01-12 22:00:00 +01:00
|
|
|
#include "mathlib.h"
|
2008-06-09 22:00:00 +02:00
|
|
|
#include "cl_edict.h"
|
2007-11-05 22:00:00 +01:00
|
|
|
|
|
|
|
#define MAX_EDIT_LINE 256
|
|
|
|
#define COMMAND_HISTORY 32
|
2008-06-22 22:00:00 +02:00
|
|
|
#define MAX_SERVERS 64
|
2008-07-23 22:00:00 +02:00
|
|
|
#define ColorIndex(c) (((c) - '0') & 7)
|
2007-06-21 22:00:00 +02:00
|
|
|
|
|
|
|
//=============================================================================
|
2008-07-16 22:00:00 +02:00
|
|
|
typedef struct frame_s
|
2007-06-21 22:00:00 +02:00
|
|
|
{
|
|
|
|
bool valid; // cleared if delta parsing was invalid
|
2008-07-10 22:00:00 +02:00
|
|
|
int serverframe;
|
|
|
|
int servertime; // server time the message is valid for (in msec)
|
|
|
|
int deltaframe;
|
2008-09-09 22:00:00 +02:00
|
|
|
byte areabits[MAX_MAP_AREA_BYTES]; // portalarea visibility bits
|
2008-07-10 22:00:00 +02:00
|
|
|
int num_entities;
|
2008-07-11 22:00:00 +02:00
|
|
|
int parse_entities; // non-masked index into cl_parse_entities array
|
2008-07-30 22:00:00 +02:00
|
|
|
entity_state_t ps;
|
2007-06-21 22:00:00 +02:00
|
|
|
} frame_t;
|
|
|
|
|
2007-11-05 22:00:00 +01:00
|
|
|
// console stuff
|
|
|
|
typedef struct field_s
|
|
|
|
{
|
|
|
|
int cursor;
|
|
|
|
int scroll;
|
|
|
|
int widthInChars;
|
|
|
|
char buffer[MAX_EDIT_LINE];
|
|
|
|
int maxchars; // menu stuff
|
|
|
|
} field_t;
|
|
|
|
|
2008-07-11 22:00:00 +02:00
|
|
|
#define CMD_BACKUP 64 // allow a lot of command backups for very fast systems
|
|
|
|
#define CMD_MASK (CMD_BACKUP - 1)
|
2007-06-21 22:00:00 +02:00
|
|
|
|
|
|
|
//
|
2007-11-04 22:00:00 +01:00
|
|
|
// the client_t structure is wiped completely at every
|
2007-06-21 22:00:00 +02:00
|
|
|
// server map change
|
|
|
|
//
|
|
|
|
typedef struct
|
|
|
|
{
|
2008-05-20 22:00:00 +02:00
|
|
|
int timeoutcount;
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2008-08-03 22:00:00 +02:00
|
|
|
bool video_prepped; // false if on new level or new ref dll
|
|
|
|
bool audio_prepped; // false if on new level or new snd dll
|
2008-05-20 22:00:00 +02:00
|
|
|
bool force_refdef; // vid has changed, so we can't use a paused refdef
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2007-11-06 22:00:00 +01:00
|
|
|
int parse_entities; // index (not anded off) into cl_parse_entities[]
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2007-09-07 22:00:00 +02:00
|
|
|
usercmd_t cmds[CMD_BACKUP]; // each mesage will send several old cmds
|
2008-07-06 22:00:00 +02:00
|
|
|
int cmd_number;
|
2008-07-11 22:00:00 +02:00
|
|
|
int predicted_origins[CMD_BACKUP][3]; // for debug comparing against server
|
2007-06-21 22:00:00 +02:00
|
|
|
|
|
|
|
float predicted_step; // for stair up smoothing
|
2008-07-03 22:00:00 +02:00
|
|
|
uint predicted_step_time;
|
2007-06-21 22:00:00 +02:00
|
|
|
|
|
|
|
vec3_t predicted_origin; // generated by CL_PredictMovement
|
|
|
|
vec3_t predicted_angles;
|
|
|
|
vec3_t prediction_error;
|
|
|
|
|
2007-10-31 22:00:00 +01:00
|
|
|
frame_t frame; // received from server
|
|
|
|
int surpressCount; // number of messages rate supressed
|
2007-06-21 22:00:00 +02:00
|
|
|
frame_t frames[UPDATE_BACKUP];
|
2008-07-06 22:00:00 +02:00
|
|
|
|
|
|
|
// mouse current position
|
|
|
|
int mouse_x[2];
|
|
|
|
int mouse_y[2];
|
|
|
|
int mouse_step;
|
|
|
|
float mouse_sens;
|
2007-06-21 22:00:00 +02:00
|
|
|
|
|
|
|
// 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.
|
|
|
|
// the server sends a delta each frame which is added to the locally
|
|
|
|
// tracked view angles to account for standing on rotating objects,
|
|
|
|
// and teleport direction changes
|
|
|
|
vec3_t viewangles;
|
|
|
|
|
2008-07-03 22:00:00 +02:00
|
|
|
dword time; // this is the time value that the client
|
2007-10-31 22:00:00 +01:00
|
|
|
// is rendering at. always <= cls.realtime
|
2007-06-21 22:00:00 +02:00
|
|
|
float lerpfrac; // between oldframe and frame
|
|
|
|
|
2007-11-06 22:00:00 +01:00
|
|
|
refdef_t refdef;
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2007-11-04 22:00:00 +01:00
|
|
|
vec3_t v_forward, v_right, v_left, v_up; // set when refdef.angles is set
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2007-11-06 22:00:00 +01:00
|
|
|
// centerprint stuff
|
2008-07-03 22:00:00 +02:00
|
|
|
int centerPrintTime;
|
2007-11-06 22:00:00 +01:00
|
|
|
int centerPrintCharWidth;
|
|
|
|
int centerPrintY;
|
|
|
|
char centerPrint[1024];
|
|
|
|
int centerPrintLines;
|
|
|
|
|
|
|
|
bool make_levelshot;
|
|
|
|
|
2007-06-21 22:00:00 +02:00
|
|
|
//
|
|
|
|
// server state information
|
|
|
|
//
|
2007-11-17 22:00:00 +01:00
|
|
|
int servercount; // server identification for prespawns
|
2007-11-06 22:00:00 +01:00
|
|
|
int playernum;
|
2007-06-21 22:00:00 +02:00
|
|
|
char configstrings[MAX_CONFIGSTRINGS][MAX_QPATH];
|
|
|
|
|
|
|
|
//
|
|
|
|
// locally derived information from server state
|
|
|
|
//
|
2008-07-30 22:00:00 +02:00
|
|
|
cmodel_t *models[MAX_MODELS];
|
|
|
|
cmodel_t *worldmodel;
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2008-08-02 22:00:00 +02:00
|
|
|
string_t edict_classnames[MAX_CLASSNAMES];
|
2007-11-01 22:00:00 +01:00
|
|
|
sound_t sound_precache[MAX_SOUNDS];
|
2007-11-04 22:00:00 +01:00
|
|
|
} client_t;
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2007-11-04 22:00:00 +01:00
|
|
|
extern client_t cl;
|
2007-06-21 22:00:00 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
==================================================================
|
|
|
|
|
|
|
|
the client_static_t structure is persistant through an arbitrary number
|
|
|
|
of server connections
|
|
|
|
|
|
|
|
==================================================================
|
|
|
|
*/
|
|
|
|
|
2007-11-17 22:00:00 +01:00
|
|
|
typedef enum
|
|
|
|
{
|
2008-07-12 22:00:00 +02:00
|
|
|
ca_uninitialized = 0,
|
2007-06-21 22:00:00 +02:00
|
|
|
ca_disconnected, // not talking to a server
|
2007-11-01 22:00:00 +01:00
|
|
|
ca_connecting, // sending request packets to the server
|
|
|
|
ca_connected, // netchan_t established, waiting for svc_serverdata
|
|
|
|
ca_active, // game views should be displayed
|
|
|
|
ca_cinematic, // playing a cinematic, not connected to a server
|
2007-06-21 22:00:00 +02:00
|
|
|
} connstate_t;
|
|
|
|
|
2008-08-03 22:00:00 +02:00
|
|
|
typedef enum
|
|
|
|
{
|
2007-06-21 22:00:00 +02:00
|
|
|
dl_none,
|
|
|
|
dl_model,
|
|
|
|
dl_sound,
|
2008-08-03 22:00:00 +02:00
|
|
|
dl_generic,
|
2007-06-21 22:00:00 +02:00
|
|
|
} dltype_t; // download type
|
|
|
|
|
2008-07-24 22:00:00 +02:00
|
|
|
struct cl_edict_s
|
|
|
|
{
|
|
|
|
// generic_edict_t (don't move these fields!)
|
|
|
|
bool free;
|
|
|
|
float freetime; // cl.time when the object was freed
|
|
|
|
int serverframe; // if not current, this ent isn't in the frame
|
|
|
|
int serialnumber; // client serialnumber
|
|
|
|
|
|
|
|
// cl_private_edict_t
|
|
|
|
entity_state_t baseline; // delta from this if not from a previous frame
|
|
|
|
entity_state_t current;
|
|
|
|
entity_state_t prev; // will always be valid, but might just be a copy of current
|
|
|
|
};
|
|
|
|
|
2008-06-22 22:00:00 +02:00
|
|
|
typedef struct serverinfo_s
|
|
|
|
{
|
|
|
|
char *mapname;
|
|
|
|
char *hostname;
|
|
|
|
char *shortname;
|
|
|
|
char *gamename;
|
|
|
|
char *netaddress;
|
|
|
|
|
|
|
|
char *playerstr;
|
|
|
|
int numplayers;
|
|
|
|
int maxplayers;
|
|
|
|
|
|
|
|
char *pingstring;
|
|
|
|
bool statusPacket;
|
|
|
|
int ping;
|
|
|
|
|
|
|
|
} serverinfo_t;
|
|
|
|
|
2007-06-21 22:00:00 +02:00
|
|
|
typedef enum {key_game, key_console, key_message, key_menu} keydest_t;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
connstate_t state;
|
2008-08-04 22:00:00 +02:00
|
|
|
bool initialized;
|
|
|
|
|
2008-07-09 22:00:00 +02:00
|
|
|
keydest_t key_dest;
|
2008-07-17 22:00:00 +02:00
|
|
|
byte *mempool;
|
|
|
|
|
2008-06-22 22:00:00 +02:00
|
|
|
int framecount;
|
2008-07-03 22:00:00 +02:00
|
|
|
dword realtime; // always increasing, no clamping, etc
|
2008-08-02 22:00:00 +02:00
|
|
|
float frametime; // seconds since last frame
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2007-11-14 22:00:00 +01:00
|
|
|
// connection information
|
2008-05-20 22:00:00 +02:00
|
|
|
string servername; // name of server from original connect
|
2007-06-21 22:00:00 +02:00
|
|
|
float connect_time; // for connection retransmits
|
2008-07-11 22:00:00 +02:00
|
|
|
|
|
|
|
netchan_t netchan;
|
2008-07-09 22:00:00 +02:00
|
|
|
sizebuf_t *multicast; // ptr for current message buffer (net or demo flow)
|
2008-07-11 22:00:00 +02:00
|
|
|
int serverProtocol; // in case we are doing some kind of version hack
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2008-06-30 22:00:00 +02:00
|
|
|
int challenge; // from the server to use for connecting
|
2008-07-11 22:00:00 +02:00
|
|
|
|
2008-06-30 22:00:00 +02:00
|
|
|
file_t *download; // file transfer from server
|
2008-07-23 22:00:00 +02:00
|
|
|
string downloadname;
|
2008-08-03 22:00:00 +02:00
|
|
|
string downloadtempname;
|
2008-05-20 22:00:00 +02:00
|
|
|
int downloadnumber;
|
|
|
|
dltype_t downloadtype;
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2008-08-02 22:00:00 +02:00
|
|
|
// demo recording info must be here, so it isn't clearing on level change
|
2008-05-20 22:00:00 +02:00
|
|
|
bool demorecording;
|
|
|
|
bool demoplayback;
|
2008-08-02 22:00:00 +02:00
|
|
|
bool demowaiting; // don't record until a non-delta message is received
|
|
|
|
string demoname; // for demo looping
|
2008-05-20 22:00:00 +02:00
|
|
|
|
2007-06-21 22:00:00 +02:00
|
|
|
file_t *demofile;
|
2008-06-22 22:00:00 +02:00
|
|
|
serverinfo_t serverlist[MAX_SERVERS]; // servers to join
|
|
|
|
int numservers;
|
2008-07-03 22:00:00 +02:00
|
|
|
int pingtime; // servers timebase
|
2008-07-06 22:00:00 +02:00
|
|
|
|
|
|
|
// cursor mouse pos for uimenu
|
|
|
|
int mouse_x;
|
|
|
|
int mouse_y;
|
2007-06-21 22:00:00 +02:00
|
|
|
} client_static_t;
|
|
|
|
|
|
|
|
extern client_static_t cls;
|
|
|
|
|
2008-07-04 22:00:00 +02:00
|
|
|
/*
|
|
|
|
==============================================================
|
|
|
|
|
|
|
|
SCREEN CONSTS
|
|
|
|
|
|
|
|
==============================================================
|
|
|
|
*/
|
|
|
|
// all drawing is done to a 640*480 virtual screen size
|
|
|
|
// and will be automatically scaled to the real resolution
|
|
|
|
#define SCREEN_WIDTH 640
|
|
|
|
#define SCREEN_HEIGHT 480
|
|
|
|
|
|
|
|
#define TINYCHAR_WIDTH (SMALLCHAR_WIDTH)
|
|
|
|
#define TINYCHAR_HEIGHT (SMALLCHAR_HEIGHT/2)
|
|
|
|
#define SMALLCHAR_WIDTH 8
|
|
|
|
#define SMALLCHAR_HEIGHT 16
|
|
|
|
#define BIGCHAR_WIDTH 16
|
|
|
|
#define BIGCHAR_HEIGHT 24
|
|
|
|
#define GIANTCHAR_WIDTH 32
|
|
|
|
#define GIANTCHAR_HEIGHT 48
|
|
|
|
|
|
|
|
extern vrect_t scr_vrect; // position of render window
|
2008-08-04 22:00:00 +02:00
|
|
|
extern vec4_t g_color_table[8];
|
2008-01-15 22:00:00 +01:00
|
|
|
|
2007-06-21 22:00:00 +02:00
|
|
|
//
|
|
|
|
// cvars
|
|
|
|
//
|
|
|
|
extern cvar_t *cl_gun;
|
|
|
|
extern cvar_t *cl_add_lights;
|
|
|
|
extern cvar_t *cl_add_particles;
|
|
|
|
extern cvar_t *cl_add_entities;
|
|
|
|
extern cvar_t *cl_predict;
|
|
|
|
extern cvar_t *cl_footsteps;
|
2008-01-20 22:00:00 +01:00
|
|
|
extern cvar_t *cl_showfps;
|
2007-06-21 22:00:00 +02:00
|
|
|
extern cvar_t *cl_upspeed;
|
|
|
|
extern cvar_t *cl_forwardspeed;
|
|
|
|
extern cvar_t *cl_sidespeed;
|
2008-07-16 22:00:00 +02:00
|
|
|
extern cvar_t *cl_shownet;
|
2007-06-21 22:00:00 +02:00
|
|
|
extern cvar_t *cl_yawspeed;
|
|
|
|
extern cvar_t *cl_pitchspeed;
|
|
|
|
|
|
|
|
extern cvar_t *cl_run;
|
|
|
|
|
|
|
|
extern cvar_t *cl_anglespeedkey;
|
2008-07-11 22:00:00 +02:00
|
|
|
|
2007-06-21 22:00:00 +02:00
|
|
|
extern cvar_t *cl_showmiss;
|
|
|
|
extern cvar_t *cl_showclamp;
|
|
|
|
|
|
|
|
extern cvar_t *lookspring;
|
|
|
|
extern cvar_t *lookstrafe;
|
2008-06-09 22:00:00 +02:00
|
|
|
extern cvar_t *cl_sensitivity;
|
|
|
|
extern cvar_t *ui_sensitivity;
|
2007-06-21 22:00:00 +02:00
|
|
|
|
|
|
|
extern cvar_t *m_pitch;
|
|
|
|
extern cvar_t *m_yaw;
|
2008-07-06 22:00:00 +02:00
|
|
|
extern cvar_t *m_forward;
|
2008-07-11 22:00:00 +02:00
|
|
|
extern cvar_t *m_side;
|
2008-07-06 22:00:00 +02:00
|
|
|
extern cvar_t *cl_mouselook;
|
2008-08-04 22:00:00 +02:00
|
|
|
extern cvar_t *cl_testentities;
|
|
|
|
extern cvar_t *cl_testlights;
|
2007-06-21 22:00:00 +02:00
|
|
|
extern cvar_t *cl_lightlevel; // FIXME HACK
|
|
|
|
extern cvar_t *cl_paused;
|
2007-11-13 22:00:00 +01:00
|
|
|
extern cvar_t *cl_levelshot_name;
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2008-06-29 22:00:00 +02:00
|
|
|
extern cvar_t *scr_centertime;
|
|
|
|
extern cvar_t *scr_showpause;
|
|
|
|
|
2007-06-21 22:00:00 +02:00
|
|
|
typedef struct
|
|
|
|
{
|
2008-08-02 22:00:00 +02:00
|
|
|
// these values shared with dlight_t so don't move them
|
2007-06-21 22:00:00 +02:00
|
|
|
vec3_t origin;
|
2008-08-02 22:00:00 +02:00
|
|
|
vec3_t color;
|
2007-06-21 22:00:00 +02:00
|
|
|
float radius;
|
2008-08-02 22:00:00 +02:00
|
|
|
|
|
|
|
// cdlight_t private starts here
|
|
|
|
int key; // so entities can reuse same entry
|
2007-06-21 22:00:00 +02:00
|
|
|
float die; // stop lighting after this time
|
|
|
|
float decay; // drop this each second
|
|
|
|
float minlight; // don't add when contributing less
|
|
|
|
} cdlight_t;
|
|
|
|
|
|
|
|
extern cdlight_t cl_dlights[MAX_DLIGHTS];
|
|
|
|
|
|
|
|
// 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
|
|
|
|
// it can be un-deltad from the original
|
|
|
|
#define MAX_PARSE_ENTITIES 1024
|
|
|
|
extern entity_state_t cl_parse_entities[MAX_PARSE_ENTITIES];
|
|
|
|
|
|
|
|
//=============================================================================
|
2008-07-11 22:00:00 +02:00
|
|
|
|
2008-08-02 22:00:00 +02:00
|
|
|
bool CL_CheckOrDownloadFile( const char *filename );
|
2007-06-21 22:00:00 +02:00
|
|
|
|
|
|
|
void CL_TeleporterParticles (entity_state_t *ent);
|
|
|
|
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);
|
|
|
|
|
|
|
|
// RAFAEL
|
|
|
|
void CL_ParticleEffect3 (vec3_t org, vec3_t dir, int color, int count);
|
|
|
|
|
|
|
|
|
|
|
|
//=================================================
|
|
|
|
|
|
|
|
// ========
|
|
|
|
// PGM
|
2007-07-28 22:00:00 +02:00
|
|
|
typedef struct cparticle_s
|
2007-06-21 22:00:00 +02:00
|
|
|
{
|
2007-07-28 22:00:00 +02:00
|
|
|
struct cparticle_s *next;
|
2007-06-21 22:00:00 +02:00
|
|
|
|
|
|
|
float time;
|
|
|
|
|
|
|
|
vec3_t org;
|
|
|
|
vec3_t vel;
|
|
|
|
vec3_t accel;
|
|
|
|
float color;
|
|
|
|
float colorvel;
|
|
|
|
float alpha;
|
|
|
|
float alphavel;
|
|
|
|
} cparticle_t;
|
|
|
|
|
2008-08-04 22:00:00 +02:00
|
|
|
//
|
|
|
|
// cinematic.c
|
|
|
|
//
|
|
|
|
bool CIN_PlayCinematic( const char *filename ); // play cinematic with specified name
|
|
|
|
void CIN_DrawCinematic( void ); // draw current frame
|
|
|
|
void CIN_RunCinematic( void ); // decompress next frame
|
|
|
|
void CIN_StopCinematic( void ); // stop video playing
|
|
|
|
|
|
|
|
#define PARTICLE_GRAVITY 40
|
2007-06-21 22:00:00 +02:00
|
|
|
#define INSTANT_PARTICLE -10000.0
|
2008-06-14 22:00:00 +02:00
|
|
|
void CL_TeleportSplash( vec3_t org );
|
2008-05-20 22:00:00 +02:00
|
|
|
int CL_ParseEntityBits( sizebuf_t *msg, uint *bits );
|
|
|
|
void CL_ParseFrame( sizebuf_t *msg );
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2008-06-30 22:00:00 +02:00
|
|
|
void CL_ParseTempEnts( sizebuf_t *msg );
|
2008-05-20 22:00:00 +02:00
|
|
|
void CL_ParseConfigString( sizebuf_t *msg );
|
2008-08-03 22:00:00 +02:00
|
|
|
void CL_WriteConfiguration( void );
|
2007-06-21 22:00:00 +02:00
|
|
|
void CL_SetLightstyle (int i);
|
|
|
|
void CL_RunParticles (void);
|
|
|
|
void CL_RunDLights (void);
|
|
|
|
void CL_RunLightStyles (void);
|
|
|
|
|
|
|
|
void CL_AddEntities (void);
|
|
|
|
void CL_AddDLights (void);
|
|
|
|
void CL_AddLightStyles (void);
|
|
|
|
|
|
|
|
//=================================================
|
|
|
|
|
2008-08-03 22:00:00 +02:00
|
|
|
void CL_PrepVideo( void );
|
|
|
|
void CL_PrepSound( void );
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2008-08-04 22:00:00 +02:00
|
|
|
//
|
|
|
|
// cl_cmds.c
|
|
|
|
//
|
2007-06-21 22:00:00 +02:00
|
|
|
void CL_Quit_f (void);
|
2007-11-06 22:00:00 +01:00
|
|
|
void CL_ScreenShot_f( void );
|
|
|
|
void CL_LevelShot_f( void );
|
2007-11-13 22:00:00 +01:00
|
|
|
void CL_SetSky_f( void );
|
2008-01-20 22:00:00 +01:00
|
|
|
void CL_SetFont_f( void );
|
2008-08-04 22:00:00 +02:00
|
|
|
void SCR_Viewpos_f( void );
|
2007-06-21 22:00:00 +02:00
|
|
|
|
|
|
|
//
|
|
|
|
// cl_main
|
|
|
|
//
|
2007-09-13 22:00:00 +02:00
|
|
|
extern render_exp_t *re;
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2008-06-29 22:00:00 +02:00
|
|
|
void CL_Init( void );
|
2007-06-21 22:00:00 +02:00
|
|
|
void CL_Disconnect (void);
|
|
|
|
void CL_Disconnect_f (void);
|
|
|
|
void CL_GetChallengePacket (void);
|
|
|
|
void CL_PingServers_f (void);
|
|
|
|
void CL_Snd_Restart_f (void);
|
|
|
|
void CL_RequestNextDownload (void);
|
|
|
|
|
|
|
|
//
|
2008-07-11 22:00:00 +02:00
|
|
|
// cl_input.c
|
2007-06-21 22:00:00 +02:00
|
|
|
//
|
2007-11-17 22:00:00 +01:00
|
|
|
void CL_InitInput( void );
|
|
|
|
void CL_ShutdownInput( void );
|
|
|
|
void CL_UpdateMouse( void );
|
2007-06-21 22:00:00 +02:00
|
|
|
void CL_SendCmd (void);
|
|
|
|
void CL_SendMove (usercmd_t *cmd);
|
|
|
|
|
|
|
|
void CL_ClearState (void);
|
|
|
|
|
|
|
|
void CL_ReadPackets (void);
|
|
|
|
|
|
|
|
int CL_ReadFromServer (void);
|
|
|
|
void CL_WriteToServer (usercmd_t *cmd);
|
|
|
|
void CL_BaseMove (usercmd_t *cmd);
|
|
|
|
|
|
|
|
void IN_CenterView (void);
|
2008-07-11 22:00:00 +02:00
|
|
|
|
2007-11-04 22:00:00 +01:00
|
|
|
void CL_CharEvent( int key );
|
2007-06-21 22:00:00 +02:00
|
|
|
char *Key_KeynumToString (int keynum);
|
|
|
|
|
|
|
|
//
|
|
|
|
// cl_demo.c
|
|
|
|
//
|
2008-07-12 22:00:00 +02:00
|
|
|
void CL_DrawDemoRecording( void );
|
|
|
|
void CL_WriteDemoMessage( sizebuf_t *msg, int head_size );
|
2008-05-20 22:00:00 +02:00
|
|
|
void CL_ReadDemoMessage( void );
|
|
|
|
void CL_StopPlayback( void );
|
|
|
|
void CL_StopRecord( void );
|
|
|
|
void CL_PlayDemo_f( void );
|
|
|
|
void CL_Record_f( void );
|
|
|
|
void CL_Stop_f( void );
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2008-05-23 22:00:00 +02:00
|
|
|
//
|
|
|
|
// cl_progs.c
|
|
|
|
//
|
|
|
|
void CL_InitClientProgs( void );
|
|
|
|
void CL_FreeClientProgs( void );
|
2008-08-05 22:00:00 +02:00
|
|
|
int CL_GetMaxClients( void );
|
2008-06-29 22:00:00 +02:00
|
|
|
void CL_DrawHUD( void );
|
2008-07-01 22:00:00 +02:00
|
|
|
edict_t *CL_GetEdict( int entnum );
|
2008-06-30 22:00:00 +02:00
|
|
|
float *CL_FadeColor( float starttime, float endtime );
|
|
|
|
bool CL_ParseUserMessage( int svc_number );
|
2008-07-01 22:00:00 +02:00
|
|
|
void CL_FreeEdicts( void );
|
|
|
|
void CL_VM_Begin( void );
|
|
|
|
void CL_VM_End( void );
|
|
|
|
|
2007-11-24 22:00:00 +01:00
|
|
|
//
|
|
|
|
// cl_sound.c
|
|
|
|
//
|
2008-06-12 22:00:00 +02:00
|
|
|
#define S_Shutdown se->Shutdown
|
2007-11-24 22:00:00 +01:00
|
|
|
|
|
|
|
// if origin is NULL, the sound will be dynamically sourced from the entity
|
2008-06-12 22:00:00 +02:00
|
|
|
#define S_StartStreaming se->StartStreaming
|
|
|
|
#define S_RegisterSound se->RegisterSound
|
2008-07-16 22:00:00 +02:00
|
|
|
#define S_StartSound( a,b,c,d,e,f ) se->StartSound( a, b, c, d, e, f, true );
|
2008-06-12 22:00:00 +02:00
|
|
|
#define S_StartLocalSound se->StartLocalSound
|
|
|
|
#define S_StartBackgroundTrack se->StartBackgroundTrack
|
|
|
|
#define S_StopBackgroundTrack se->StopBackgroundTrack
|
|
|
|
#define S_RawSamples se->StreamRawSamples
|
|
|
|
#define S_StopAllSounds se->StopAllSounds
|
2007-11-24 22:00:00 +01:00
|
|
|
|
|
|
|
// recompute the reletive volumes for all running sounds
|
|
|
|
// reletive to the given entityNum / orientation
|
2008-06-12 22:00:00 +02:00
|
|
|
#define S_Update se->Frame
|
|
|
|
#define S_BeginRegistration se->BeginRegistration
|
|
|
|
#define S_EndRegistration se->EndRegistration
|
2007-11-24 22:00:00 +01:00
|
|
|
|
2007-06-21 22:00:00 +02:00
|
|
|
//
|
|
|
|
// cl_parse.c
|
|
|
|
//
|
2008-05-20 22:00:00 +02:00
|
|
|
void CL_ParseServerMessage( sizebuf_t *msg );
|
2008-08-02 22:00:00 +02:00
|
|
|
void CL_Download_f( void );
|
2007-06-21 22:00:00 +02:00
|
|
|
|
2008-07-04 22:00:00 +02:00
|
|
|
//
|
|
|
|
// cl_scrn.c
|
|
|
|
//
|
|
|
|
void SCR_Init( void );
|
|
|
|
void SCR_UpdateScreen( void );
|
|
|
|
void VID_Init( void );
|
2008-08-04 22:00:00 +02:00
|
|
|
void SCR_Shutdown( void );
|
2008-07-04 22:00:00 +02:00
|
|
|
void SCR_AdjustSize( float *x, float *y, float *w, float *h );
|
|
|
|
void SCR_DrawPic( float x, float y, float width, float height, const char *picname );
|
|
|
|
void SCR_FillRect( float x, float y, float width, float height, const float *color );
|
|
|
|
void SCR_DrawSmallChar( int x, int y, int ch );
|
|
|
|
void SCR_DrawChar( int x, int y, float w, float h, int ch );
|
|
|
|
void SCR_DrawSmallStringExt( int x, int y, const char *string, float *setColor, bool forceColor );
|
|
|
|
void SCR_DrawStringExt( int x, int y, float w, float h, const char *string, float *setColor, bool forceColor );
|
|
|
|
void SCR_DrawBigString( int x, int y, const char *s, float alpha );
|
|
|
|
void SCR_DrawBigStringColor( int x, int y, const char *s, vec4_t color );
|
|
|
|
void SCR_DrawFPS( void );
|
|
|
|
void SCR_DrawNet( void );
|
|
|
|
|
2007-06-21 22:00:00 +02:00
|
|
|
//
|
|
|
|
// cl_view.c
|
|
|
|
//
|
|
|
|
|
|
|
|
void V_Init (void);
|
2007-11-06 22:00:00 +01:00
|
|
|
void V_CalcRect( void );
|
2008-07-17 22:00:00 +02:00
|
|
|
void V_Shutdown( void );
|
2007-11-06 22:00:00 +01:00
|
|
|
bool V_PreRender( void );
|
|
|
|
void V_RenderHUD( void );
|
|
|
|
void V_PostRender( void );
|
2007-11-05 22:00:00 +01:00
|
|
|
void V_RenderView( void );
|
2007-11-06 22:00:00 +01:00
|
|
|
void V_RenderLogo( void );
|
|
|
|
void V_RenderSplash( void );
|
2008-06-28 22:00:00 +02:00
|
|
|
float V_CalcFov( float fov_x, float width, float height );
|
2007-06-21 22:00:00 +02:00
|
|
|
|
|
|
|
//
|
|
|
|
// cl_pred.c
|
|
|
|
//
|
|
|
|
void CL_InitPrediction (void);
|
|
|
|
void CL_PredictMove (void);
|
|
|
|
void CL_CheckPredictionError (void);
|
|
|
|
|
2008-06-12 22:00:00 +02:00
|
|
|
//
|
|
|
|
// cl_ents.c
|
|
|
|
//
|
|
|
|
void CL_GetEntitySoundSpatialization( int ent, vec3_t origin, vec3_t velocity );
|
|
|
|
void CL_AddLoopingSounds( void );
|
|
|
|
|
2007-06-21 22:00:00 +02:00
|
|
|
//
|
|
|
|
// cl_fx.c
|
|
|
|
//
|
|
|
|
cdlight_t *CL_AllocDlight (int key);
|
|
|
|
void CL_AddParticles (void);
|
2008-06-30 22:00:00 +02:00
|
|
|
void CL_ClearEffects( void );
|
2008-10-19 22:00:00 +02:00
|
|
|
void CL_StudioEvent( mstudioevent_t *event, entity_state_t *ent );
|
2008-08-05 22:00:00 +02:00
|
|
|
entity_state_t *CL_GetEdictByIndex( int index );
|
|
|
|
entity_state_t *CL_GetLocalPlayer( void );
|
2007-06-21 22:00:00 +02:00
|
|
|
|
|
|
|
//
|
|
|
|
// cl_pred.c
|
|
|
|
//
|
2007-11-04 22:00:00 +01:00
|
|
|
void CL_PredictMovement (void);
|
|
|
|
|
|
|
|
//
|
|
|
|
// cl_con.c
|
|
|
|
//
|
|
|
|
int Con_PrintStrlen( const char *string );
|
|
|
|
bool Con_Active( void );
|
|
|
|
void Con_CheckResize( void );
|
2007-11-14 22:00:00 +01:00
|
|
|
void Con_Print( const char *txt );
|
2007-11-04 22:00:00 +01:00
|
|
|
void Con_Init( void );
|
|
|
|
void Con_Clear_f( void );
|
|
|
|
void Con_ToggleConsole_f( void );
|
|
|
|
void Con_DrawNotify( void );
|
|
|
|
void Con_ClearNotify( void );
|
|
|
|
void Con_RunConsole( void );
|
|
|
|
void Con_DrawConsole( void );
|
|
|
|
void Con_PageUp( void );
|
|
|
|
void Con_PageDown( void );
|
|
|
|
void Con_Top( void );
|
|
|
|
void Con_Bottom( void );
|
|
|
|
void Con_Close( void );
|
|
|
|
|
2007-11-05 22:00:00 +01:00
|
|
|
extern bool chat_team;
|
|
|
|
extern bool anykeydown;
|
2007-11-04 22:00:00 +01:00
|
|
|
extern int g_console_field_width;
|
2007-11-05 22:00:00 +01:00
|
|
|
extern field_t historyEditLines[COMMAND_HISTORY];
|
|
|
|
extern field_t g_consoleField;
|
|
|
|
extern field_t chatField;
|
|
|
|
|
2008-06-28 22:00:00 +02:00
|
|
|
//
|
2008-08-05 22:00:00 +02:00
|
|
|
// cl_menu.c
|
2008-06-28 22:00:00 +02:00
|
|
|
//
|
|
|
|
extern bool ui_active;
|
|
|
|
extern const int vm_ui_numbuiltins;
|
|
|
|
extern prvm_builtin_t vm_ui_builtins[];
|
|
|
|
|
|
|
|
void UI_Init( void );
|
|
|
|
void UI_DrawCredits( void );
|
|
|
|
void UI_KeyEvent( int key );
|
|
|
|
void UI_ShowMenu( void );
|
|
|
|
void UI_HideMenu( void );
|
|
|
|
void UI_Shutdown( void );
|
|
|
|
void UI_Draw( void );
|
|
|
|
|
2007-11-05 22:00:00 +01:00
|
|
|
//
|
|
|
|
// cl_keys.c
|
|
|
|
//
|
|
|
|
void Field_Clear( field_t *edit );
|
|
|
|
void Field_CharEvent( field_t *edit, int ch );
|
|
|
|
void Field_KeyDownEvent( field_t *edit, int key );
|
|
|
|
void Field_Draw( field_t *edit, int x, int y, int width, bool showCursor );
|
|
|
|
void Field_BigDraw( field_t *edit, int x, int y, int width, bool showCursor );
|
|
|
|
|
|
|
|
bool Key_IsDown( int keynum );
|
|
|
|
char *Key_IsBind( int keynum );
|
|
|
|
void Key_Event (int key, bool down, uint time);
|
|
|
|
void Key_Init (void);
|
|
|
|
void Key_WriteBindings (file_t *f);
|
|
|
|
void Key_SetBinding (int keynum, char *binding);
|
|
|
|
void Key_ClearStates (void);
|
|
|
|
char *Key_KeynumToString (int keynum);
|
|
|
|
int Key_StringToKeynum (char *str);
|
|
|
|
int Key_GetKey( char *binding );
|
2008-08-05 22:00:00 +02:00
|
|
|
void Key_EnumCmds_f( void );
|
2007-11-04 22:00:00 +01:00
|
|
|
|
2007-11-06 22:00:00 +01:00
|
|
|
//
|
|
|
|
// cl_cin.c
|
|
|
|
//
|
2007-11-21 22:00:00 +01:00
|
|
|
bool SCR_PlayCinematic( char *name, int bits );
|
2007-11-06 22:00:00 +01:00
|
|
|
void SCR_DrawCinematic( void );
|
|
|
|
void SCR_RunCinematic( void );
|
|
|
|
void SCR_StopCinematic( void );
|
2007-11-21 22:00:00 +01:00
|
|
|
void SCR_ResetCinematic( void );
|
|
|
|
int SCR_GetCinematicState( void );
|
2008-08-02 22:00:00 +02:00
|
|
|
void CL_PlayVideo_f( void );
|
2007-11-06 22:00:00 +01:00
|
|
|
|
2007-11-04 22:00:00 +01:00
|
|
|
#endif//CLIENT_H
|