mirror of
https://git.code.sf.net/p/quake/quakeforge-old
synced 2024-11-13 07:47:46 +00:00
7e04ceced5
biosuits, pents, and quads wear off are now gone. Sort of. They are caused by places where two texture edges meet and there are little gaps at the seams where nothing gets drawn. This is also why noclip screws w/ the screen if you walk outside of the map in the GL targets. We now draw a backdrop whose color is set by r_clearcolor, ala software renderer.
315 lines
6.4 KiB
C
315 lines
6.4 KiB
C
/*
|
|
Copyright (C) 1996-1997 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
|
|
|
|
#ifndef _CLIENT_H
|
|
#define _CLIENT_H
|
|
|
|
#include "config.h"
|
|
|
|
#ifdef HAS_ZLIB
|
|
#include <zlib.h>
|
|
#else
|
|
#include "nozip.h"
|
|
#endif
|
|
|
|
#include <qtypes.h>
|
|
#include <common.h>
|
|
#include <quakefs.h>
|
|
|
|
typedef struct
|
|
{
|
|
vec3_t viewangles;
|
|
|
|
// intended velocities
|
|
float forwardmove;
|
|
float sidemove;
|
|
float upmove;
|
|
#ifdef QUAKE2
|
|
byte lightlevel;
|
|
#endif
|
|
} usercmd_t;
|
|
|
|
typedef struct
|
|
{
|
|
int length;
|
|
char map[MAX_STYLESTRING];
|
|
} lightstyle_t;
|
|
|
|
typedef struct
|
|
{
|
|
char name[MAX_SCOREBOARDNAME];
|
|
float entertime;
|
|
int frags;
|
|
int colors; // two 4 bit fields
|
|
byte translations[VID_GRADES*256];
|
|
} scoreboard_t;
|
|
|
|
#define CSHIFT_CONTENTS 0
|
|
#define CSHIFT_DAMAGE 1
|
|
#define CSHIFT_BONUS 2
|
|
#define CSHIFT_POWERUP 3
|
|
#define NUM_CSHIFTS 4
|
|
|
|
#define NAME_LENGTH 64
|
|
|
|
|
|
//
|
|
// client_state_t should hold all pieces of the client state
|
|
//
|
|
|
|
#define SIGNONS 4 // signon messages to receive before connected
|
|
|
|
#define MAX_DLIGHTS 32
|
|
typedef struct
|
|
{
|
|
vec3_t origin;
|
|
float radius;
|
|
float die; // stop lighting after this time
|
|
float decay; // drop this each second
|
|
float minlight; // don't add when contributing less
|
|
int key;
|
|
#ifdef QUAKE2
|
|
qboolean dark; // subtracts light instead of adding
|
|
#endif
|
|
} dlight_t;
|
|
|
|
|
|
#define MAX_BEAMS 24
|
|
typedef struct
|
|
{
|
|
int entity;
|
|
struct model_s *model;
|
|
float endtime;
|
|
vec3_t start, end;
|
|
} beam_t;
|
|
|
|
#define MAX_EFRAGS 640
|
|
|
|
#define MAX_MAPSTRING 2048
|
|
#define MAX_DEMOS 8
|
|
#define MAX_DEMONAME 16
|
|
|
|
typedef enum {
|
|
ca_dedicated, // a dedicated server with no ability to start a client
|
|
ca_disconnected, // full screen console with no connection
|
|
ca_connected, // valid netcon, talking to a server
|
|
ca_onserver, // processing data lists, etc
|
|
ca_active // everything is in, so frames can be rendered
|
|
} cactive_t;
|
|
|
|
//
|
|
// the client_static_t structure is persistant through an arbitrary number
|
|
// of server connections
|
|
//
|
|
typedef struct
|
|
{
|
|
cactive_t state;
|
|
|
|
#ifdef QUAKEWORLD
|
|
netchan_t netchan;
|
|
|
|
char userinfo[MAX_INFO_STRING];
|
|
char servername[MAX_OSPATH];
|
|
|
|
// download stuff
|
|
int qport;
|
|
FILE *download;
|
|
char downloadtempname[MAX_OSPATH];
|
|
char downloadname[MAX_OSPATH];
|
|
int downloadnumber;
|
|
dltyle_t downloadtype;
|
|
int downloadpercent;
|
|
|
|
int challenge;
|
|
float latency;
|
|
#endif
|
|
|
|
#ifdef UQUAKE
|
|
// personalization data sent to server
|
|
char mapstring[MAX_QPATH];
|
|
char spawnparms[MAX_MAPSTRING]; // to restart a level
|
|
|
|
// connection information
|
|
int signon; // 0 to SIGNONS
|
|
struct qsocket_s *netcon;
|
|
sizebuf_t message; // net msg write buffer
|
|
#endif
|
|
|
|
// demos - this stuff can't go into client_state_t
|
|
int demonum; // -1 == don't play
|
|
char demos[MAX_DEMOS][MAX_DEMONAME]; // when not playing
|
|
qboolean demorecording;
|
|
qboolean demoplayback;
|
|
qboolean timedemo;
|
|
int forcetrack; // -1 == normal cd track
|
|
gzFile *demofile;
|
|
int td_lastframe; // for msg timing
|
|
int td_startframe; // inits to host_framecount
|
|
float td_starttime; // of 2nd frame of timedemo
|
|
} client_static_t;
|
|
|
|
extern client_static_t cls;
|
|
|
|
|
|
#include <qstructs.h>
|
|
|
|
//
|
|
// cvars
|
|
//
|
|
extern cvar_t cl_name;
|
|
extern cvar_t cl_color;
|
|
|
|
extern cvar_t cl_upspeed;
|
|
extern cvar_t cl_forwardspeed;
|
|
extern cvar_t cl_backspeed;
|
|
extern cvar_t cl_sidespeed;
|
|
|
|
extern cvar_t cl_movespeedkey;
|
|
|
|
extern cvar_t cl_yawspeed;
|
|
extern cvar_t cl_pitchspeed;
|
|
|
|
extern cvar_t cl_anglespeedkey;
|
|
|
|
extern cvar_t cl_autofire;
|
|
|
|
extern cvar_t cl_shownet;
|
|
extern cvar_t cl_nolerp;
|
|
|
|
extern cvar_t cl_sbar;
|
|
extern cvar_t cl_hudswap;
|
|
|
|
extern cvar_t cl_pitchdriftspeed;
|
|
extern cvar_t lookspring;
|
|
extern cvar_t lookstrafe;
|
|
extern cvar_t sensitivity;
|
|
|
|
extern cvar_t m_pitch;
|
|
extern cvar_t m_yaw;
|
|
extern cvar_t m_forward;
|
|
extern cvar_t m_side;
|
|
|
|
extern cvar_t _windowed_mouse;
|
|
|
|
#define MAX_TEMP_ENTITIES 64 // lightning bolts, etc
|
|
#define MAX_STATIC_ENTITIES 128 // torches, etc
|
|
|
|
// FIXME, allocate dynamically
|
|
extern efrag_t cl_efrags[MAX_EFRAGS];
|
|
extern entity_t cl_entities[MAX_EDICTS];
|
|
extern entity_t cl_static_entities[MAX_STATIC_ENTITIES];
|
|
extern lightstyle_t cl_lightstyle[MAX_LIGHTSTYLES];
|
|
extern dlight_t cl_dlights[MAX_DLIGHTS];
|
|
extern entity_t cl_temp_entities[MAX_TEMP_ENTITIES];
|
|
extern beam_t cl_beams[MAX_BEAMS];
|
|
|
|
//=============================================================================
|
|
|
|
//
|
|
// cl_main
|
|
//
|
|
dlight_t *CL_AllocDlight (int key);
|
|
void CL_DecayLights (void);
|
|
|
|
void CL_Init (void);
|
|
|
|
void CL_EstablishConnection (char *host);
|
|
void CL_Signon1 (void);
|
|
void CL_Signon2 (void);
|
|
void CL_Signon3 (void);
|
|
void CL_Signon4 (void);
|
|
|
|
void CL_Disconnect (void);
|
|
void CL_Disconnect_f (void);
|
|
void CL_NextDemo (void);
|
|
|
|
#define MAX_VISEDICTS 256
|
|
extern int cl_numvisedicts;
|
|
extern entity_t *cl_visedicts[MAX_VISEDICTS];
|
|
|
|
//
|
|
// cl_input
|
|
//
|
|
typedef struct
|
|
{
|
|
int down[2]; // key nums holding it down
|
|
int state; // low bit is down state
|
|
} kbutton_t;
|
|
|
|
extern kbutton_t in_mlook, in_klook;
|
|
extern kbutton_t in_strafe;
|
|
extern kbutton_t in_speed;
|
|
|
|
void CL_InitInput (void);
|
|
void CL_SendCmd (void);
|
|
void CL_SendMove (usercmd_t *cmd);
|
|
|
|
void CL_ParseTEnt (void);
|
|
void CL_UpdateTEnts (void);
|
|
|
|
void CL_ClearState (void);
|
|
|
|
|
|
int CL_ReadFromServer (void);
|
|
void CL_WriteToServer (usercmd_t *cmd);
|
|
void CL_BaseMove (usercmd_t *cmd);
|
|
|
|
|
|
float CL_KeyState (kbutton_t *key);
|
|
char *Key_KeynumToString (int keynum);
|
|
|
|
//
|
|
// cl_demo.c
|
|
//
|
|
void CL_StopPlayback (void);
|
|
int CL_GetMessage (void);
|
|
|
|
void CL_Stop_f (void);
|
|
void CL_Record_f (void);
|
|
void CL_PlayDemo_f (void);
|
|
void CL_TimeDemo_f (void);
|
|
|
|
//
|
|
// cl_parse.c
|
|
//
|
|
void CL_ParseServerMessage (void);
|
|
void CL_NewTranslation (int slot);
|
|
|
|
//
|
|
// view
|
|
//
|
|
void V_StartPitchDrift (void);
|
|
void V_StopPitchDrift (void);
|
|
|
|
void V_RenderView (void);
|
|
void V_UpdatePalette (void);
|
|
void V_Register (void);
|
|
void V_ParseDamage (void);
|
|
void V_SetContentsColor (int contents);
|
|
void V_CalcBlend (void);
|
|
|
|
|
|
//
|
|
// cl_tent
|
|
//
|
|
void CL_InitTEnts (void);
|
|
void CL_SignonReply (void);
|
|
#endif // _CLIENT_H
|