whitespace and headers.

This commit is contained in:
Ragnvald Maartmann-Moe IV 2001-08-29 02:12:57 +00:00
parent d87b164450
commit 2f5e0cf603
24 changed files with 619 additions and 901 deletions

View file

@ -32,6 +32,7 @@
#include "QF/cvar.h"
#include "QF/mathlib.h"
#include "client.h"
#include "world.h"
@ -43,11 +44,10 @@ cvar_t *chase_up;
cvar_t *chase_right;
cvar_t *chase_active;
vec3_t chase_pos;
vec3_t chase_angles;
vec3_t chase_dest;
vec3_t chase_dest_angles;
vec3_t chase_pos;
void
@ -59,7 +59,6 @@ Chase_Init_Cvars (void)
chase_active = Cvar_Get ("chase_active", "0", CVAR_NONE, NULL, "None");
}
void
Chase_Reset (void)
{
@ -67,7 +66,6 @@ Chase_Reset (void)
// start position 12 units behind head
}
void
TraceLine (vec3_t start, vec3_t end, vec3_t impact)
{
@ -79,7 +77,6 @@ TraceLine (vec3_t start, vec3_t end, vec3_t impact)
VectorCopy (trace.endpos, impact);
}
void
Chase_Update (void)
{
@ -88,7 +85,6 @@ Chase_Update (void)
vec3_t forward, up, right;
vec3_t dest, stop;
// if can't see player, reset
AngleVectors (cl.viewangles, forward, right, up);

View file

@ -36,12 +36,14 @@
# include <strings.h>
#endif
#include "client.h"
#include "QF/cmd.h"
#include "QF/console.h"
#include "QF/msg.h"
#include "QF/sizebuf.h"
#include "client.h"
/*
Cmd_ForwardToServer
@ -69,18 +71,18 @@ Cmd_ForwardToServer (void)
SZ_Print (&cls.message, "\n");
}
void
cl_Cmd_Init (void)
{
// register our commands
Cmd_AddCommand ("cmd", Cmd_ForwardToServer, "Send a command to the server.\n"
Cmd_AddCommand ("cmd", Cmd_ForwardToServer, "Send a command to the "
"server.\n"
"Commands:\n"
"download - Same as the command.\n"
"kill - Same as the command.\n"
"msg (value) - Same as the command.\n"
"prespawn (entity) (spot) - Find a spawn spot for the"
" player entity.\n"
"prespawn (entity) (spot) - Find a spawn spot for the "
"player entity.\n"
"spawn (entity) - Spawn the player entity.\n"
"setinfo - Same as the command.\n"
"serverinfo - Same as the command.");

View file

@ -38,13 +38,13 @@
#include "QF/cmd.h"
#include "QF/console.h"
#include "compat.h"
#include "QF/cvar.h"
#include "QF/input.h"
#include "QF/keys.h"
#include "QF/msg.h"
#include "client.h"
#include "compat.h"
#include "host.h"
/*
@ -64,7 +64,6 @@
state bit 2 is edge triggered on the down to up transition
*/
kbutton_t in_mlook, in_klook;
kbutton_t in_left, in_right, in_forward, in_back;
kbutton_t in_lookup, in_lookdown, in_moveleft, in_moveright;
@ -77,8 +76,8 @@ int in_impulse;
void
KeyDown (kbutton_t *b)
{
int k;
const char *c;
int k;
c = Cmd_Argv (1);
if (c[0])
@ -107,8 +106,8 @@ KeyDown (kbutton_t *b)
void
KeyUp (kbutton_t *b)
{
int k;
const char *c;
int k;
c = Cmd_Argv (1);
if (c[0])
@ -138,28 +137,24 @@ KeyUp (kbutton_t *b)
b->state |= 4; // impulse up
}
void
IN_KLookDown (void)
{
KeyDown (&in_klook);
}
void
IN_KLookUp (void)
{
KeyUp (&in_klook);
}
void
IN_MLookDown (void)
{
KeyDown (&in_mlook);
}
void
IN_MLookUp (void)
{
@ -168,49 +163,42 @@ IN_MLookUp (void)
V_StartPitchDrift ();
}
void
IN_UpDown (void)
{
KeyDown (&in_up);
}
void
IN_UpUp (void)
{
KeyUp (&in_up);
}
void
IN_DownDown (void)
{
KeyDown (&in_down);
}
void
IN_DownUp (void)
{
KeyUp (&in_down);
}
void
IN_LeftDown (void)
{
KeyDown (&in_left);
}
void
IN_LeftUp (void)
{
KeyUp (&in_left);
}
void
IN_RightDown (void)
{
@ -223,168 +211,144 @@ IN_RightUp (void)
KeyUp (&in_right);
}
void
IN_ForwardDown (void)
{
KeyDown (&in_forward);
}
void
IN_ForwardUp (void)
{
KeyUp (&in_forward);
}
void
IN_BackDown (void)
{
KeyDown (&in_back);
}
void
IN_BackUp (void)
{
KeyUp (&in_back);
}
void
IN_LookupDown (void)
{
KeyDown (&in_lookup);
}
void
IN_LookupUp (void)
{
KeyUp (&in_lookup);
}
void
IN_LookdownDown (void)
{
KeyDown (&in_lookdown);
}
void
IN_LookdownUp (void)
{
KeyUp (&in_lookdown);
}
void
IN_MoveleftDown (void)
{
KeyDown (&in_moveleft);
}
void
IN_MoveleftUp (void)
{
KeyUp (&in_moveleft);
}
void
IN_MoverightDown (void)
{
KeyDown (&in_moveright);
}
void
IN_MoverightUp (void)
{
KeyUp (&in_moveright);
}
void
IN_SpeedDown (void)
{
KeyDown (&in_speed);
}
void
IN_SpeedUp (void)
{
KeyUp (&in_speed);
}
void
IN_StrafeDown (void)
{
KeyDown (&in_strafe);
}
void
IN_StrafeUp (void)
{
KeyUp (&in_strafe);
}
void
IN_AttackDown (void)
{
KeyDown (&in_attack);
}
void
IN_AttackUp (void)
{
KeyUp (&in_attack);
}
void
IN_UseDown (void)
{
KeyDown (&in_use);
}
void
IN_UseUp (void)
{
KeyUp (&in_use);
}
void
IN_JumpDown (void)
{
KeyDown (&in_jump);
}
void
IN_JumpUp (void)
{
KeyUp (&in_jump);
}
void
IN_Impulse (void)
{
in_impulse = atoi (Cmd_Argv (1));
}
/*
CL_KeyState
@ -434,9 +398,6 @@ CL_KeyState (kbutton_t *key)
return val;
}
//==========================================================================
cvar_t *cl_anglespeedkey;
cvar_t *cl_backspeed;
cvar_t *cl_forwardspeed;
@ -446,7 +407,6 @@ cvar_t *cl_sidespeed;
cvar_t *cl_upspeed;
cvar_t *cl_yawspeed;
/*
CL_AdjustAngles
@ -455,8 +415,7 @@ cvar_t *cl_yawspeed;
void
CL_AdjustAngles (void)
{
float speed;
float up, down;
float speed, up, down;
if (in_speed.state & 1)
speed = host_frametime * cl_anglespeedkey->value;
@ -499,7 +458,6 @@ CL_AdjustAngles (void)
}
/*
CL_BaseMove
@ -531,8 +489,7 @@ CL_BaseMove (usercmd_t *cmd)
cmd->forwardmove -= cl_backspeed->value * CL_KeyState (&in_back);
}
// adjust for speed key
//
// adjust for speed key
if (in_speed.state & 1) {
cmd->forwardmove *= cl_movespeedkey->value;
cmd->sidemove *= cl_movespeedkey->value;
@ -563,10 +520,9 @@ CL_BaseMove (usercmd_t *cmd)
void
CL_SendMove (usercmd_t *cmd)
{
int i;
int bits;
sizebuf_t buf;
byte data[128];
int bits, i;
sizebuf_t buf;
buf.maxsize = 128;
buf.cursize = 0;
@ -574,8 +530,7 @@ CL_SendMove (usercmd_t *cmd)
cl.cmd = *cmd;
// send the movement message
//
// send the movement message
MSG_WriteByte (&buf, clc_move);
MSG_WriteFloat (&buf, cl.mtime[0]); // so server can get ping times
@ -587,8 +542,7 @@ CL_SendMove (usercmd_t *cmd)
MSG_WriteShort (&buf, cmd->sidemove);
MSG_WriteShort (&buf, cmd->upmove);
// send button bits
//
// send button bits
bits = 0;
if (in_attack.state & 3)
@ -604,13 +558,12 @@ CL_SendMove (usercmd_t *cmd)
MSG_WriteByte (&buf, in_impulse);
in_impulse = 0;
// deliver the message
//
// deliver the message
if (cls.demoplayback)
return;
// always dump the first two message, because it may contain leftover inputs
// from the last level
// always dump the first two message, because it may contain leftover
// inputs from the last level
if (++cl.movemessages <= 2)
return;
@ -620,7 +573,6 @@ CL_SendMove (usercmd_t *cmd)
}
}
void
CL_InitInput (void)
{

View file

@ -97,7 +97,6 @@ CL_Sbar_f (cvar_t *var)
r_lineadj = var->int_val ? sb_lines : 0;
}
void
CL_InitCvars (void)
{
@ -113,8 +112,7 @@ CL_InitCvars (void)
"inform when execing a command");
cl_name = Cvar_Get ("_cl_name", "player", CVAR_ARCHIVE, NULL,
"Player name");
cl_color = Cvar_Get ("_cl_color", "0", CVAR_ARCHIVE, NULL,
"Player color");
cl_color = Cvar_Get ("_cl_color", "0", CVAR_ARCHIVE, NULL, "Player color");
cl_anglespeedkey = Cvar_Get ("cl_anglespeedkey", "1.5", CVAR_NONE, NULL,
"turn `run' speed multiplier");
cl_backspeed = Cvar_Get ("cl_backspeed", "200", CVAR_ARCHIVE, NULL,
@ -157,7 +155,6 @@ CL_InitCvars (void)
"display the current time");
}
void
CL_ClearState (void)
{
@ -192,7 +189,6 @@ CL_ClearState (void)
}
}
/*
CL_StopCshifts
@ -202,13 +198,13 @@ void
CL_StopCshifts (void)
{
int i;
for (i = 0; i < NUM_CSHIFTS; i++)
cl.cshifts[i].percent = 0;
for (i = 0; i < MAX_CL_STATS; i++)
cl.stats[i] = 0;
}
/*
CL_Disconnect
@ -250,7 +246,6 @@ CL_Disconnect (void)
cls.signon = 0;
}
void
CL_Disconnect_f (void)
{
@ -259,7 +254,6 @@ CL_Disconnect_f (void)
Host_ShutdownServer (false);
}
/*
CL_EstablishConnection
@ -289,7 +283,6 @@ CL_EstablishConnection (const char *host)
game_target = IMT_DEFAULT;
}
/*
CL_SignonReply
@ -332,7 +325,6 @@ CL_SignonReply (void)
}
}
/*
CL_NextDemo
@ -360,7 +352,6 @@ CL_NextDemo (void)
cls.demonum++;
}
void
CL_PrintEntities_f (void)
{
@ -380,7 +371,6 @@ CL_PrintEntities_f (void)
}
}
/*
SetPal
@ -390,9 +380,9 @@ void
SetPal (int i)
{
#if 0
static int old;
byte pal[768];
int c;
static int old;
if (i == old)
return;
@ -418,7 +408,6 @@ SetPal (int i)
#endif
}
void
CL_NewDlight (int key, float x, float y, float z, float radius, float time,
int type)
@ -456,7 +445,6 @@ CL_NewDlight (int key, float x, float y, float z, float radius, float time,
}
}
/*
CL_LerpPoint
@ -501,17 +489,15 @@ CL_LerpPoint (void)
return frac;
}
void
CL_RelinkEntities (void)
{
entity_t **_ent;
entity_t *ent;
int i, j;
float frac, f, d;
vec3_t delta;
float bobjrotate;
dlight_t *dl;
float bobjrotate, frac, f, d;
int i, j;
vec3_t delta;
r_player_entity = &cl_entities[cl.viewentity];
@ -654,7 +640,6 @@ CL_RelinkEntities (void)
}
}
/*
CL_ReadFromServer
@ -692,7 +677,6 @@ CL_ReadFromServer (void)
return 0;
}
void
CL_SendCmd (void)
{
@ -728,7 +712,6 @@ CL_SendCmd (void)
SZ_Clear (&cls.message);
}
void
CL_SetState (cactive_t state)
{
@ -744,14 +727,12 @@ CL_SetState (cactive_t state)
}
}
void
Force_CenterView_f (void)
{
cl.viewangles[PITCH] = 0;
}
void
CL_Init (void)
{
@ -769,10 +750,8 @@ CL_Init (void)
Cmd_AddCommand ("playdemo", CL_PlayDemo_f, "No Description");
Cmd_AddCommand ("timedemo", CL_TimeDemo_f, "No Description");
Cmd_AddCommand ("maplist", COM_Maplist_f, "No Description");
Cmd_AddCommand ("force_centerview", Force_CenterView_f, "force the view to "
"be level");
Cmd_AddCommand ("force_centerview", Force_CenterView_f, "force the view "
"to be level");
for (i = 0; i < MAX_STATIC_ENTITIES; i++) {
cl_static_entities[i].baseline = &cl_static_entity_baselines[i];

View file

@ -119,17 +119,12 @@ CL_EntityNum (int num)
return &cl_entities[num];
}
void
CL_ParseStartSoundPacket (void)
{
vec3_t pos;
int channel, ent;
int sound_num;
int volume;
int field_mask;
float attenuation;
int i;
int channel, ent, field_mask, sound_num, volume, i;
vec3_t pos;
field_mask = MSG_ReadByte (net_message);
@ -159,7 +154,6 @@ CL_ParseStartSoundPacket (void)
volume / 255.0, attenuation);
}
/*
CL_KeepaliveMessage
@ -169,11 +163,11 @@ CL_ParseStartSoundPacket (void)
void
CL_KeepaliveMessage (void)
{
byte olddata[8192];
float time;
static float lastmsg;
int ret;
sizebuf_t old;
byte olddata[8192];
if (sv.active)
return; // no need if server is local
@ -182,7 +176,8 @@ CL_KeepaliveMessage (void)
// read messages from server, should just be nops
old = *net_message->message;
memcpy (olddata, net_message->message->data, net_message->message->cursize);
memcpy (olddata, net_message->message->data,
net_message->message->cursize);
do {
ret = CL_GetMessage ();
@ -202,7 +197,8 @@ CL_KeepaliveMessage (void)
} while (ret);
*net_message->message = old;
memcpy (net_message->message->data, olddata, net_message->message->cursize);
memcpy (net_message->message->data, olddata,
net_message->message->cursize);
// check time
time = Sys_DoubleTime ();
@ -218,18 +214,15 @@ CL_KeepaliveMessage (void)
SZ_Clear (&cls.message);
}
struct model_s **snd_worldmodel = &cl.worldmodel;
void
CL_ParseServerInfo (void)
{
char *str;
int i;
int nummodels, numsounds;
char model_precache[MAX_MODELS][MAX_QPATH];
char sound_precache[MAX_SOUNDS][MAX_QPATH];
char *str;
int nummodels, numsounds, i;
Con_DPrintf ("Serverinfo packet received.\n");
@ -258,12 +251,14 @@ CL_ParseServerInfo (void)
strncpy (cl.levelname, str, sizeof (cl.levelname) - 1);
// seperate the printfs so the server message can have a color
Con_Printf ("\n\n\35\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\37\n\n");
Con_Printf ("\n\n\35\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36"
"\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\36\37\n"
"\n");
Con_Printf ("%c%s\n", 2, str);
// first we go through and touch all of the precache data that still
// happens to be in the cache, so precaching something else doesn't
// needlessly purge it
// first we go through and touch all of the precache data that still
// happens to be in the cache, so precaching something else doesn't
// needlessly purge it
// precache models
memset (cl.model_precache, 0, sizeof (cl.model_precache));
@ -321,10 +316,8 @@ CL_ParseServerInfo (void)
noclip_anglehack = false; // noclip is turned off at start
}
int bitcounts[16];
/*
CL_ParseUpdate
@ -335,13 +328,10 @@ int bitcounts[16];
void
CL_ParseUpdate (int bits)
{
int i;
model_t *model;
int modnum;
qboolean forcelink;
entity_t *ent;
int num;
int skin;
int modnum, num, skin, i;
model_t *model;
qboolean forcelink;
if (cls.signon == SIGNONS - 1) {
// first update is the final signon stage
@ -372,7 +362,7 @@ CL_ParseUpdate (int bits)
forcelink = false;
if (forcelink) {
//FIXME do this right (ie, protocol support)
// FIXME: do this right (ie, protocol support)
ent->alpha = 1;
ent->scale = 1;
ent->glow_color = 254;
@ -480,7 +470,6 @@ CL_ParseUpdate (int bits)
}
}
void
CL_ParseBaseline (entity_t *ent)
{
@ -503,7 +492,6 @@ CL_ParseBaseline (entity_t *ent)
ent->baseline->colormod = 255;
}
/*
CL_ParseClientdata
@ -608,7 +596,6 @@ CL_ParseClientdata (int bits)
}
}
void
CL_ParseStatic (void)
{
@ -641,13 +628,11 @@ CL_ParseStatic (void)
R_AddEfrags (ent);
}
void
CL_ParseStaticSound (void)
{
int sound_num, vol, atten, i;
vec3_t org;
int sound_num, vol, atten;
int i;
for (i = 0; i < 3; i++)
org[i] = MSG_ReadCoord (net_message);
@ -658,17 +643,14 @@ CL_ParseStaticSound (void)
S_StaticSound (cl.sound_precache[sound_num], org, vol, atten);
}
#define SHOWNET(x) if(cl_shownet->int_val==2)Con_Printf ("%3i:%s\n", net_message->readcount-1, x);
int snd_viewentity;
void
CL_ParseServerMessage (void)
{
int cmd;
int i;
int cmd, i;
// if recording demos, copy the message out
if (cl_shownet->int_val == 1)
@ -703,7 +685,8 @@ CL_ParseServerMessage (void)
// other commands
switch (cmd) {
default:
Host_Error ("CL_ParseServerMessage: Illegible server message\n");
Host_Error ("CL_ParseServerMessage: Illegible server "
"message\n");
break;
case svc_nop:
@ -723,9 +706,8 @@ CL_ParseServerMessage (void)
case svc_version:
i = MSG_ReadLong (net_message);
if (i != PROTOCOL_VERSION)
Host_Error
("CL_ParseServerMessage: Server is protocol %i instead of %i\n",
i, PROTOCOL_VERSION);
Host_Error ("CL_ParseServerMessage: Server is protocol %i "
"instead of %i\n", i, PROTOCOL_VERSION);
break;
case svc_disconnect:
@ -783,8 +765,8 @@ CL_ParseServerMessage (void)
Sbar_Changed ();
i = MSG_ReadByte (net_message);
if (i >= cl.maxclients)
Host_Error
("CL_ParseServerMessage: svc_updatename > MAX_SCOREBOARD");
Host_Error ("CL_ParseServerMessage: svc_updatename > "
"MAX_SCOREBOARD");
strcpy (cl.scores[i].name, MSG_ReadString (net_message));
break;
@ -792,8 +774,8 @@ CL_ParseServerMessage (void)
Sbar_Changed ();
i = MSG_ReadByte (net_message);
if (i >= cl.maxclients)
Host_Error
("CL_ParseServerMessage: svc_updatefrags > MAX_SCOREBOARD");
Host_Error ("CL_ParseServerMessage: svc_updatefrags > "
"MAX_SCOREBOARD");
cl.scores[i].frags = MSG_ReadShort (net_message);
break;
@ -801,8 +783,8 @@ CL_ParseServerMessage (void)
Sbar_Changed ();
i = MSG_ReadByte (net_message);
if (i >= cl.maxclients)
Host_Error
("CL_ParseServerMessage: svc_updatecolors > MAX_SCOREBOARD");
Host_Error ("CL_ParseServerMessage: svc_updatecolors > "
"MAX_SCOREBOARD");
cl.scores[i].colors = MSG_ReadByte (net_message);
//XXX CL_NewTranslation (i);
break;
@ -842,7 +824,8 @@ CL_ParseServerMessage (void)
case svc_signonnum:
i = MSG_ReadByte (net_message);
if (i <= cls.signon)
Host_Error ("Received signon %i when at %i", i, cls.signon);
Host_Error ("Received signon %i when at %i", i,
cls.signon);
cls.signon = i;
CL_SignonReply ();
break;

View file

@ -48,6 +48,9 @@
#include "client.h"
#include "sbar.h"
extern void V_PrepBlend (void);
void
SCR_DrawNet (int swap)
{
@ -75,8 +78,6 @@ static SCR_Func scr_funcs[] = {
0
};
extern void V_PrepBlend (void);
void
CL_UpdateScreen (double realtime)
{

View file

@ -71,7 +71,6 @@ typedef struct {
explosion_t cl_explosions[MAX_EXPLOSIONS];
sfx_t *cl_sfx_wizhit;
sfx_t *cl_sfx_knighthit;
sfx_t *cl_sfx_tink1;
@ -106,6 +105,7 @@ static const particle_effect_t prot_to_rend[]={
PE_UNKNOWN, // TE_BEAM
};
void
CL_TEnts_Init (void)
{
@ -123,7 +123,6 @@ CL_TEnts_Init (void)
cl_spr_explod = Mod_ForName ("progs/s_explod.spr", true);
}
void
CL_Init_Entity (entity_t *ent)
{
@ -138,7 +137,6 @@ CL_Init_Entity (entity_t *ent)
ent->pose1 = ent->pose2 = -1;
}
void
CL_ClearTEnts (void)
{
@ -157,13 +155,11 @@ CL_ClearTEnts (void)
}
}
explosion_t *
CL_AllocExplosion (void)
{
int i;
float time;
int index;
int index, i;
for (i = 0; i < MAX_EXPLOSIONS; i++)
if (!cl_explosions[i].ent.model)
@ -180,14 +176,12 @@ CL_AllocExplosion (void)
return &cl_explosions[index];
}
void
CL_ParseBeam (model_t *m)
{
int ent;
vec3_t start, end;
beam_t *b;
int i;
int ent, i;
vec3_t start, end;
ent = MSG_ReadShort (net_message);
@ -223,17 +217,15 @@ CL_ParseBeam (model_t *m)
Con_Printf ("beam list overflow!\n");
}
void
CL_ParseTEnt (void)
{
byte type;
vec3_t pos;
dlight_t *dl;
int rnd;
int colorStart, colorLength;
explosion_t *ex;
int colorStart, colorLength, rnd;
int cnt = -1;
explosion_t *ex;
vec3_t pos;
type = MSG_ReadByte (net_message);
//XXX FIXME this is to get around an nq/qw protocol colission
@ -404,17 +396,14 @@ CL_ParseTEnt (void)
}
}
void
CL_UpdateBeams (void)
{
int i;
beam_t *b;
vec3_t dist, org;
float d;
entity_t **ent;
float yaw, pitch;
float forward;
float forward, pitch, yaw, d;
int i;
vec3_t dist, org;
// update lightning
for (i = 0, b = cl_beams; i < MAX_BEAMS; i++, b++) {
@ -466,14 +455,12 @@ CL_UpdateBeams (void)
}
}
void
CL_UpdateExplosions (void)
{
int i;
int f;
explosion_t *ex;
entity_t **ent;
explosion_t *ex;
int f, i;
for (i = 0, ex = cl_explosions; i < MAX_EXPLOSIONS; i++, ex++) {
if (!ex->ent.model)
@ -492,7 +479,6 @@ CL_UpdateExplosions (void)
}
}
void
CL_UpdateTEnts (void)
{
@ -500,7 +486,6 @@ CL_UpdateTEnts (void)
CL_UpdateExplosions ();
}
/*
CL_ParseParticleEffect
@ -509,8 +494,8 @@ CL_UpdateTEnts (void)
void
CL_ParseParticleEffect (void)
{
vec3_t org, dir;
int i, count, msgcount, color;
vec3_t org, dir;
for (i = 0; i < 3; i++)
org[i] = MSG_ReadCoord (net_message);

View file

@ -87,7 +87,6 @@ float v_dmg_time, v_dmg_roll, v_dmg_pitch;
float v_blend[4];
extern cvar_t *vid_gamma;
extern int in_forward, in_forward2, in_back;
cshift_t cshift_empty = { {130, 80, 50}, 0};
@ -100,23 +99,22 @@ cshift_t cshift_bonus = { {215, 186, 60}, 50};
float
V_CalcBob (void)
{
float bob;
float cycle;
float bob, cycle;
cycle = cl.time - (int) (cl.time / cl_bobcycle->value) * cl_bobcycle->value;
cycle = cl.time - (int) (cl.time / cl_bobcycle->value) *
cl_bobcycle->value;
cycle /= cl_bobcycle->value;
if (cycle < cl_bobup->value)
cycle = M_PI * cycle / cl_bobup->value;
else
cycle =
M_PI + M_PI * (cycle - cl_bobup->value) / (1.0 - cl_bobup->value);
cycle = M_PI + M_PI * (cycle - cl_bobup->value) / (1.0 -
cl_bobup->value);
// bob is proportional to velocity in the xy plane
// (don't count Z, or jumping messes it up)
// bob is proportional to velocity in the xy plane
// (don't count Z, or jumping messes it up)
bob =
sqrt (cl.velocity[0] * cl.velocity[0] +
cl.velocity[1] * cl.velocity[1]) * cl_bob->value;
bob = sqrt (cl.velocity[0] * cl.velocity[0] +
cl.velocity[1] * cl.velocity[1]) * cl_bob->value;
// Con_Printf ("speed: %5.1f\n", Length(cl.velocity));
bob = bob * 0.3 + bob * 0.7 * sin (cycle);
if (bob > 4)
@ -124,10 +122,8 @@ V_CalcBob (void)
else if (bob < -7)
bob = -7;
return bob;
}
void
V_StartPitchDrift (void)
{
@ -142,7 +138,6 @@ V_StartPitchDrift (void)
}
}
void
V_StopPitchDrift (void)
{
@ -151,7 +146,6 @@ V_StopPitchDrift (void)
cl.pitchvel = 0;
}
/*
V_DriftPitch
@ -215,22 +209,15 @@ V_DriftPitch (void)
}
}
/*
PALETTE FLASHES
*/
/* PALETTE FLASHES */
void
V_ParseDamage (void)
{
int armor, blood;
vec3_t from;
int i;
vec3_t forward, right, up;
entity_t *ent;
float side;
float count;
float count, side;
int armor, blood, i;
vec3_t from, forward, right, up;
armor = MSG_ReadByte (net_message);
blood = MSG_ReadByte (net_message);
@ -282,7 +269,6 @@ V_ParseDamage (void)
v_dmg_time = v_kicktime->value;
}
void
V_cshift_f (void)
{
@ -292,7 +278,6 @@ V_cshift_f (void)
cshift_empty.percent = atoi (Cmd_Argv (4));
}
/*
V_BonusFlash_f
@ -306,7 +291,6 @@ V_BonusFlash_f (void)
cl.cshifts[CSHIFT_BONUS] = cshift_bonus;
}
/*
V_SetContentsColor
@ -336,7 +320,6 @@ V_SetContentsColor (int contents)
}
}
void
V_CalcPowerupCshift (void)
{
@ -378,7 +361,6 @@ V_CalcPowerupCshift (void)
}
}
/*
V_CalcBlend
@ -388,8 +370,8 @@ V_CalcPowerupCshift (void)
void
V_CalcBlend (void)
{
float r = 0, g = 0, b = 0, a = 0;
float a2, a3;
float r = 0, g = 0, b = 0, a = 0;
int i;
for (i = 0; i < NUM_CSHIFTS; i++) {
@ -421,7 +403,6 @@ V_CalcBlend (void)
v_blend[3] = bound (0.0, a, 1.0);
}
void
V_PrepBlend (void)
{
@ -440,7 +421,8 @@ V_PrepBlend (void)
cl.prev_cshifts[i].percent = cl.cshifts[i].percent;
}
for (j = 0; j < 3; j++) {
if (cl.cshifts[i].destcolor[j] != cl.prev_cshifts[i].destcolor[j]) {
if (cl.cshifts[i].destcolor[j] != cl.prev_cshifts[i].destcolor[j])
{
vid.cshift_changed = true;
cl.prev_cshifts[i].destcolor[j] = cl.cshifts[i].destcolor[j];
}
@ -463,11 +445,7 @@ V_PrepBlend (void)
V_CalcBlend();
}
/*
VIEW RENDERING
*/
/* VIEW RENDERING */
float
angledelta (float a)
@ -478,13 +456,11 @@ angledelta (float a)
return a;
}
void
CalcGunAngle (void)
{
float yaw, pitch, move;
static float oldyaw = 0;
static float oldpitch = 0;
float yaw, pitch, move;
static float oldpitch = 0, oldyaw = 0;
yaw = r_refdef.viewangles[YAW];
pitch = -r_refdef.viewangles[PITCH];
@ -528,7 +504,6 @@ CalcGunAngle (void)
v_iyaw_level->value;
}
void
V_BoundOffsets (void)
{
@ -536,8 +511,8 @@ V_BoundOffsets (void)
ent = &cl_entities[cl.viewentity];
// absolutely bound refresh reletive to entity clipping hull
// so the view can never be inside a solid wall
// absolutely bound refresh reletive to entity clipping hull
// so the view can never be inside a solid wall
if (r_refdef.vieworg[0] < ent->origin[0] - 14)
r_refdef.vieworg[0] = ent->origin[0] - 14;
@ -553,7 +528,6 @@ V_BoundOffsets (void)
r_refdef.vieworg[2] = ent->origin[2] + 30;
}
/*
V_AddIdle
@ -573,7 +547,6 @@ V_AddIdle (void)
v_iyaw_level->value;
}
/*
V_CalcViewRoll
@ -602,7 +575,6 @@ V_CalcViewRoll (void)
}
void
V_CalcIntermissionRefdef (void)
{
@ -626,16 +598,14 @@ V_CalcIntermissionRefdef (void)
Cvar_SetValue (v_idlescale, old);
}
void
V_CalcRefdef (void)
{
entity_t *ent, *view;
int i;
vec3_t forward, right, up;
vec3_t angles;
float bob;
static float oldz = 0;
int i;
vec3_t angles, forward, right, up;
V_DriftPitch ();
@ -644,9 +614,8 @@ V_CalcRefdef (void)
// view is the weapon model (only visible from inside body)
view = &cl.viewent;
// transform the view offset by the model's matrix to get the offset from
// model origin for the view
// transform the view offset by the model's matrix to get the offset from
// model origin for the view
ent->angles[YAW] = cl.viewangles[YAW]; // the model should face
// the view dir
ent->angles[PITCH] = -cl.viewangles[PITCH]; // the model should face
@ -659,9 +628,9 @@ V_CalcRefdef (void)
VectorCopy (ent->origin, r_refdef.vieworg);
r_refdef.vieworg[2] += cl.viewheight + bob;
// never let it sit exactly on a node line, because a water plane can
// dissapear when viewed with the eye exactly on it.
// the server protocol only specifies to 1/16 pixel, so add 1/32 in each axis
// never let it sit exactly on a node line, because a water plane can
// dissapear when viewed with the eye exactly on it.
// server protocol only specifies to 1/16 pixel, so add 1/32 in each axis
r_refdef.vieworg[0] += 1.0 / 32;
r_refdef.vieworg[1] += 1.0 / 32;
r_refdef.vieworg[2] += 1.0 / 32;
@ -696,13 +665,13 @@ V_CalcRefdef (void)
for (i = 0; i < 3; i++) {
view->origin[i] += forward[i] * bob * 0.4;
// view->origin[i] += right[i]*bob*0.4;
// view->origin[i] += up[i]*bob*0.8;
// view->origin[i] += right[i]*bob*0.4;
// view->origin[i] += up[i]*bob*0.8;
}
view->origin[2] += bob;
// fudge position around to keep amount of weapon visible
// roughly equal with different FOV
// fudge position around to keep amount of weapon visible
// roughly equal with different FOV
if (cl_sbar->int_val == 0 && scr_viewsize->int_val >= 100)
;
else if (scr_viewsize->int_val == 110)
@ -730,7 +699,7 @@ V_CalcRefdef (void)
steptime = cl.time - cl.oldtime;
if (steptime < 0)
//FIXME I_Error ("steptime < 0");
//FIXME I_Error ("steptime < 0");
steptime = 0;
oldz += steptime * 80;
@ -747,7 +716,6 @@ V_CalcRefdef (void)
Chase_Update ();
}
/*
V_RenderView
@ -777,61 +745,68 @@ V_RenderView (void)
R_RenderView ();
}
void
V_Init (void)
{
Cmd_AddCommand ("v_cshift", V_cshift_f, "This adjusts all of the colors currently being displayed.\n"
"Used when you are underwater, hit, have the Ring of Shadows, or Quad Damage. (v_cshift r g b intensity)");
Cmd_AddCommand ("bf", V_BonusFlash_f, "Background flash, used when you pick up an item");
Cmd_AddCommand ("centerview", V_StartPitchDrift, "Centers the player's view ahead after +lookup or +lookdown \n"
"Will not work while mlook is active or freelook is 1.");
Cmd_AddCommand ("v_cshift", V_cshift_f, "This adjusts all of the colors "
"currently being displayed.\n"
"Used when you are underwater, hit, have the Ring of "
"Shadows, or Quad Damage. (v_cshift r g b intensity)");
Cmd_AddCommand ("bf", V_BonusFlash_f, "Background flash, used when you "
"pick up an item");
Cmd_AddCommand ("centerview", V_StartPitchDrift, "Centers the player's "
"view ahead after +lookup or +lookdown\n"
"Will not work while mlook is active or freelook is 1.");
}
void
V_Init_Cvars (void)
{
v_centermove = Cvar_Get ("v_centermove", "0.15", CVAR_NONE, NULL,
"How far the player must move forward before the view re-centers");
"How far the player must move forward before "
"the view re-centers");
v_centerspeed = Cvar_Get ("v_centerspeed", "500", CVAR_NONE, NULL,
"How quickly you return to a center view after a lookup or lookdown");
"How quickly you return to a center view after "
"a lookup or lookdown");
v_iyaw_cycle = Cvar_Get ("v_iyaw_cycle", "2", CVAR_NONE, NULL,
"How far you tilt right and left when v_idlescale is enabled");
"How far you tilt right and left when "
"v_idlescale is enabled");
v_iroll_cycle = Cvar_Get ("v_iroll_cycle", "0.5", CVAR_NONE, NULL,
"How quickly you tilt right and left when v_idlescale is enabled");
"How quickly you tilt right and left when "
"v_idlescale is enabled");
v_ipitch_cycle = Cvar_Get ("v_ipitch_cycle", "1", CVAR_NONE, NULL,
"How quickly you lean forwards and backwards when v_idlescale is enabled");
"How quickly you lean forwards and backwards "
"when v_idlescale is enabled");
v_iyaw_level = Cvar_Get ("v_iyaw_level", "0.3", CVAR_NONE, NULL,
"How far you tilt right and left when v_idlescale is enabled");
"How far you tilt right and left when "
"v_idlescale is enabled");
v_iroll_level = Cvar_Get ("v_iroll_level", "0.1", CVAR_NONE, NULL,
"How far you tilt right and left when v_idlescale is enabled");
"How far you tilt right and left when "
"v_idlescale is enabled");
v_ipitch_level = Cvar_Get ("v_ipitch_level", "0.3", CVAR_NONE, NULL,
"How far you lean forwards and backwards when v_idlescale is enabled");
"How far you lean forwards and backwards when "
"v_idlescale is enabled");
v_idlescale = Cvar_Get ("v_idlescale", "0", CVAR_NONE, NULL,
"Toggles whether the view remains idle");
"Toggles whether the view remains idle");
scr_ofsx = Cvar_Get ("scr_ofsx", "0", CVAR_NONE, NULL, "None");
scr_ofsy = Cvar_Get ("scr_ofsy", "0", CVAR_NONE, NULL, "None");
scr_ofsz = Cvar_Get ("scr_ofsz", "0", CVAR_NONE, NULL, "None");
cl_rollspeed = Cvar_Get ("cl_rollspeed", "200", CVAR_NONE, NULL,
"How quickly you straighten out after strafing");
"How quickly you straighten out after strafing");
cl_rollangle = Cvar_Get ("cl_rollangle", "2.0", CVAR_NONE, NULL,
"How much your screen tilts when strafing");
"How much your screen tilts when strafing");
cl_bob = Cvar_Get ("cl_bob", "0.02", CVAR_NONE, NULL,
"How much your weapon moves up and down when walking");
"How much your weapon moves up and down when walking");
cl_bobcycle = Cvar_Get ("cl_bobcycle", "0.6", CVAR_NONE, NULL,
"How quickly your weapon moves up and down when walking");
cl_bobup = Cvar_Get ("cl_bobup", "0.5", CVAR_NONE, NULL,
"How long your weapon stays up before cycling when walking");
"How quickly your weapon moves up and down when "
"walking");
cl_bobup = Cvar_Get ("cl_bobup", "0.5", CVAR_NONE, NULL, "How long your "
"weapon stays up before cycling when walking");
v_kicktime = Cvar_Get ("v_kicktime", "0.5", CVAR_NONE, NULL,
"How long the kick from an attack lasts");
"How long the kick from an attack lasts");
v_kickroll = Cvar_Get ("v_kickroll", "0.6", CVAR_NONE, NULL,
"How much you lean when hit");
"How much you lean when hit");
v_kickpitch = Cvar_Get ("v_kickpitch", "0.6", CVAR_NONE, NULL,
"How much you look up when hit");
"How much you look up when hit");
}

View file

@ -35,6 +35,7 @@
#include "QF/cvar.h"
#include "QF/qargs.h"
#include "QF/vfs.h"
#include "game.h"
void Cvar_Info (struct cvar_s *var);
@ -55,8 +56,8 @@ int static_registered = 1;
void
COM_CheckRegistered (void)
{
VFile *h;
unsigned short check[128];
VFile *h;
COM_FOpenFile ("gfx/pop.lmp", &h);
static_registered = 0;
@ -73,7 +74,6 @@ COM_CheckRegistered (void)
}
}
void
COM_Init (void)
{

View file

@ -30,12 +30,14 @@
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <ctype.h>
#include <windows.h>
#include "conproc.h"
#include "QF/console.h"
#include "conproc.h"
HANDLE heventDone;
HANDLE hfileBuffer;
HANDLE heventChildSend;
@ -59,7 +61,7 @@ InitConProc (HANDLE hFile, HANDLE heventParent, HANDLE heventChild)
{
DWORD dwID;
// ignore if we don't have all the events.
// ignore if we don't have all the events.
if (!hFile || !heventParent || !heventChild)
return;
@ -67,7 +69,7 @@ InitConProc (HANDLE hFile, HANDLE heventParent, HANDLE heventChild)
heventParentSend = heventParent;
heventChildSend = heventChild;
// so we'll know when to go away.
// so we'll know when to go away.
heventDone = CreateEvent (NULL, FALSE, FALSE, NULL);
if (!heventDone) {
@ -81,15 +83,14 @@ InitConProc (HANDLE hFile, HANDLE heventParent, HANDLE heventChild)
Con_Printf ("Couldn't create QHOST thread\n");
return;
}
// save off the input/output handles.
// save off the input/output handles.
hStdout = GetStdHandle (STD_OUTPUT_HANDLE);
hStdin = GetStdHandle (STD_INPUT_HANDLE);
// force 80 character width, at least 25 character height
// force 80 character width, at least 25 character height
SetConsoleCXCY (hStdout, 80, 25);
}
void
DeinitConProc (void)
{
@ -97,14 +98,13 @@ DeinitConProc (void)
SetEvent (heventDone);
}
DWORD
RequestProc (DWORD dwNichts)
{
int iBeginLine, iEndLine;
int *pBuffer;
DWORD dwRet;
HANDLE heventWait[2];
int iBeginLine, iEndLine;
heventWait[0] = heventParentSend;
heventWait[1] = heventDone;
@ -157,7 +157,6 @@ RequestProc (DWORD dwNichts)
return 0;
}
LPVOID
GetMappedBuffer (HANDLE hfileBuffer)
{
@ -169,14 +168,12 @@ GetMappedBuffer (HANDLE hfileBuffer)
return pBuffer;
}
void
ReleaseMappedBuffer (LPVOID pBuffer)
{
UnmapViewOfFile (pBuffer);
}
BOOL
GetScreenBufferLines (int *piLines)
{
@ -191,7 +188,6 @@ GetScreenBufferLines (int *piLines)
return bRet;
}
BOOL
SetScreenBufferLines (int iLines)
{
@ -199,19 +195,17 @@ SetScreenBufferLines (int iLines)
return SetConsoleCXCY (hStdout, 80, iLines);
}
BOOL
ReadText (LPTSTR pszText, int iBeginLine, int iEndLine)
{
BOOL bRet;
COORD coord;
DWORD dwRead;
BOOL bRet;
coord.X = 0;
coord.Y = iBeginLine;
bRet = ReadConsoleOutputCharacter (hStdout,
pszText,
bRet = ReadConsoleOutputCharacter (hStdout, pszText,
80 * (iEndLine - iBeginLine + 1),
coord, &dwRead);
@ -222,13 +216,12 @@ ReadText (LPTSTR pszText, int iBeginLine, int iEndLine)
return bRet;
}
BOOL
WriteText (LPCTSTR szText)
{
char upper, *sz;
DWORD dwWritten;
INPUT_RECORD rec;
char upper, *sz;
sz = (LPTSTR) szText;
@ -260,7 +253,6 @@ WriteText (LPCTSTR szText)
return TRUE;
}
int
CharToCode (char c)
{
@ -285,7 +277,6 @@ CharToCode (char c)
return c;
}
BOOL
SetConsoleCXCY (HANDLE hStdout, int cx, int cy)
{
@ -303,7 +294,7 @@ SetConsoleCXCY (HANDLE hStdout, int cx, int cy)
if (!GetConsoleScreenBufferInfo (hStdout, &info))
return FALSE;
// height
// height
info.srWindow.Left = 0;
info.srWindow.Right = info.dwSize.X - 1;
info.srWindow.Top = 0;
@ -330,7 +321,7 @@ SetConsoleCXCY (HANDLE hStdout, int cx, int cy)
if (!GetConsoleScreenBufferInfo (hStdout, &info))
return FALSE;
// width
// width
info.srWindow.Left = 0;
info.srWindow.Right = cx - 1;
info.srWindow.Top = 0;

View file

@ -39,7 +39,6 @@
#include <stdarg.h>
#include "QF/cmd.h"
#include "compat.h"
#include "QF/console.h"
#include "QF/cvar.h"
#include "QF/draw.h"
@ -51,13 +50,14 @@
#include "QF/va.h"
#include "client.h"
#include "compat.h"
int con_ormask;
console_t con_main;
console_t con_chat;
console_t *con; // point to either con_main or con_chat
int con_linewidth; // characters across screen
int con_ormask;
int con_totallines; // total lines in console scrollback
float con_cursorspeed = 4;
@ -100,7 +100,6 @@ Con_ToggleConsole_f (void)
Con_ClearNotify ();
}
void
Con_ToggleChat_f (void)
{
@ -115,7 +114,6 @@ Con_ToggleChat_f (void)
Con_ClearNotify ();
}
void
Con_Clear_f (void)
{
@ -126,7 +124,6 @@ Con_Clear_f (void)
con_main.display = con_main.current;
}
void
Con_ClearNotify (void)
{
@ -136,7 +133,6 @@ Con_ClearNotify (void)
con_times[i] = 0;
}
void
Con_MessageMode_f (void)
{
@ -146,7 +142,6 @@ Con_MessageMode_f (void)
key_dest = key_message;
}
void
Con_MessageMode2_f (void)
{
@ -156,12 +151,11 @@ Con_MessageMode2_f (void)
key_dest = key_message;
}
void
Con_Resize (console_t *con)
{
int i, j, width, oldwidth, oldtotallines, numlines, numchars;
char tbuf[CON_TEXTSIZE];
int i, j, width, oldwidth, oldtotallines, numlines, numchars;
width = (vid.width >> 3) - 2;
@ -206,7 +200,6 @@ Con_Resize (console_t *con)
con->display = con->current;
}
/*
Con_CheckResize
@ -219,7 +212,6 @@ Con_CheckResize (void)
Con_Resize (&con_chat);
}
void
Con_Init (const char *plugin_name)
{
@ -244,16 +236,14 @@ Con_Init (const char *plugin_name)
con_initialized = true;
}
void
Con_Init_Cvars (void)
{
con_notifytime =
Cvar_Get ("con_notifytime", "3", CVAR_NONE, NULL,
"How long in seconds messages are displayed on screen");
con_notifytime = Cvar_Get ("con_notifytime", "3", CVAR_NONE, NULL,
"How long in seconds messages are displayed "
"on screen");
}
void
Con_Linefeed (void)
{
@ -267,7 +257,6 @@ Con_Linefeed (void)
' ', con_linewidth);
}
/*
Con_Print
@ -278,10 +267,8 @@ Con_Linefeed (void)
void
Con_Print (const char *txt)
{
int y;
int c, l;
int mask, c, l, y;
static int cr;
int mask;
// echo to debugging console
Sys_Printf ("%s", txt);
@ -316,7 +303,6 @@ Con_Print (const char *txt)
cr = false;
}
if (!con->x) {
Con_Linefeed ();
// mark time for transparent overlay
@ -346,11 +332,7 @@ Con_Print (const char *txt)
}
}
/*
DRAWING
*/
/* DRAWING */
/*
Con_DrawInput
@ -360,10 +342,9 @@ Con_Print (const char *txt)
void
Con_DrawInput (void)
{
int y;
int i;
char *text;
char temp[MAXCMDLINE];
char *text;
int i, y;
if (key_dest != key_console && cls.state == ca_active)
return; // don't draw anything (always draw if not active)
@ -389,7 +370,6 @@ Con_DrawInput (void)
Draw_Character ((i + 1) << 3, con_vislines - 22, text[i]);
}
/*
Con_DrawNotify
@ -398,12 +378,9 @@ Con_DrawInput (void)
void
Con_DrawNotify (void)
{
int x, v;
char *text;
int i;
char *s, *text;
int skip, i, x, v;
float time;
char *s;
int skip;
v = 0;
for (i = con->current - NUM_CON_TIMES + 1; i <= con->current; i++) {
@ -455,7 +432,6 @@ Con_DrawNotify (void)
con_notifylines = v;
}
/*
Con_DrawConsole
@ -464,10 +440,8 @@ Con_DrawNotify (void)
void
Con_DrawConsole (int lines)
{
int i, x, y;
int rows;
char *text;
int row;
int row, rows, i, x, y;
if (lines <= 0)
return;
@ -510,13 +484,12 @@ Con_DrawConsole (int lines)
Con_DrawInput ();
}
void
Con_DrawDownload (int lines)
{
int i, j, x, y, n;
const char *text;
char dlbar[1024];
const char *text;
int i, j, x, y, n;
if (!cls.download)
return;
@ -569,11 +542,10 @@ Con_DrawDownload (int lines)
void
Con_CompleteCommandLine (void)
{
const char *cmd = "";
char *s;
int c, v, a, i;
int cmd_len;
char *s;
const char *cmd = "";
const char **list[3] = {0, 0, 0};
int cmd_len, c, v, a, i;
s = key_lines[edit_line] + 1;
if (*s == '\\' || *s == '/')
@ -656,4 +628,3 @@ Con_CompleteCommandLine (void)
if (list[i])
free (list[i]);
}

View file

@ -31,20 +31,21 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "QF/qargs.h"
#include "QF/vfs.h"
#include "game.h"
qboolean standard_quake = false;
qboolean hipnotic, rogue, abyss;
/*
Game_Init
*/
void
Game_Init (void)
{
int i;
// FIXME: make this dependant on QF metadata in the mission packs
standard_quake = true;
if ((i = COM_CheckParm ("-hipnotic"))) {

View file

@ -31,7 +31,6 @@
#endif
#include "QF/cdaudio.h"
#include "compat.h"
#include "QF/cmd.h"
#include "QF/console.h"
#include "QF/cvar.h"
@ -48,6 +47,7 @@
#include "QF/vid.h"
#include "chase.h"
#include "compat.h"
#include "host.h"
#include "r_local.h"
#include "sbar.h"
@ -61,31 +61,26 @@ extern void Host_Skin_Init (void);
extern void Host_Skin_Init_Cvars (void);
/*
A server can always be started, even if the system started out as a client
to a remote system.
A server can always be started, even if the system started out as a client
to a remote system.
A client can NOT be started if the system started as a dedicated server.
Memory is cleared / released when a server or client begins, not when they end.
A client can NOT be started if the system started as a dedicated server.
Memory is cleared/released when a server or client begins, not when they end.
*/
extern int fps_count;
qboolean msg_suppress_1 = 0;
qboolean host_initialized; // true if into command execution
quakeparms_t host_parms;
qboolean host_initialized; // true if into command execution
double host_frametime;
double host_time;
double realtime; // without any filtering or bounding
double oldrealtime; // last frame run
int host_framecount;
int host_hunklevel;
int minimum_memory;
client_t *host_client; // current client
@ -94,8 +89,6 @@ jmp_buf host_abortserver;
byte *vid_basepal;
extern cvar_t *cl_writecfg;
cvar_t *fs_globalcfg;
cvar_t *fs_usercfg;
@ -108,24 +101,26 @@ cvar_t *serverprofile;
cvar_t *fraglimit;
cvar_t *timelimit;
cvar_t *teamplay;
cvar_t *samelevel;
cvar_t *noexit;
cvar_t *samelevel;
cvar_t *skill;
cvar_t *deathmatch;
cvar_t *coop;
cvar_t *deathmatch;
cvar_t *pausable;
cvar_t *temp1;
extern cvar_t *cl_writecfg;
extern int fps_count;
void
Host_EndGame (const char *message, ...)
{
va_list argptr;
char string[1024];
va_list argptr;
va_start (argptr, message);
vsnprintf (string, sizeof (string), message, argptr);
@ -154,9 +149,9 @@ Host_EndGame (const char *message, ...)
void
Host_Error (const char *error, ...)
{
va_list argptr;
char string[1024];
static qboolean inerror = false;
va_list argptr;
if (inerror)
Sys_Error ("Host_Error: recursively entered");
@ -183,7 +178,6 @@ Host_Error (const char *error, ...)
longjmp (host_abortserver, 1);
}
void
Host_FindMaxClients (void)
{
@ -227,7 +221,6 @@ Host_FindMaxClients (void)
Cvar_SetValue (deathmatch, 0.0);
}
void
Host_InitLocal (void)
{
@ -243,17 +236,17 @@ Host_InitLocal (void)
sys_ticrate = Cvar_Get ("sys_ticrate", "0.05", CVAR_NONE, NULL, "None");
serverprofile = Cvar_Get ("serverprofile", "0", CVAR_NONE, NULL, "None");
fraglimit = Cvar_Get ("fraglimit", "0", CVAR_SERVERINFO, Cvar_Info, "None");
timelimit = Cvar_Get ("timelimit", "0", CVAR_SERVERINFO, Cvar_Info, "None");
fraglimit = Cvar_Get ("fraglimit", "0", CVAR_SERVERINFO, Cvar_Info,
"None");
timelimit = Cvar_Get ("timelimit", "0", CVAR_SERVERINFO, Cvar_Info,
"None");
teamplay = Cvar_Get ("teamplay", "0", CVAR_SERVERINFO, Cvar_Info, "None");
samelevel = Cvar_Get ("samelevel", "0", CVAR_NONE, NULL, "None");
noexit = Cvar_Get ("noexit", "0", CVAR_SERVERINFO, Cvar_Info, "None");
skill = Cvar_Get ("skill", "1", CVAR_NONE, NULL, "0 - 3");
deathmatch = Cvar_Get ("deathmatch", "0", CVAR_NONE, NULL, "0, 1, or 2");
coop = Cvar_Get ("coop", "0", CVAR_NONE, NULL, "0 or 1");
pausable = Cvar_Get ("pausable", "1", CVAR_NONE, NULL, "None");
temp1 = Cvar_Get ("temp1", "0", CVAR_NONE, NULL, "None");
Host_FindMaxClients ();
@ -261,7 +254,6 @@ Host_InitLocal (void)
host_time = 1.0; // so a think at time 0 won't get called
}
/*
Host_WriteConfiguration
@ -272,8 +264,8 @@ Host_WriteConfiguration (void)
{
VFile *f;
// dedicated servers initialize the host but don't parse and set the
// config.cfg cvars
// dedicated servers initialize the host but don't parse and set the
// config.cfg cvars
if (cl_writecfg->int_val && (host_initialized & !isDedicated)) {
char *path = va ("%s/config.cfg", com_gamedir);
f = Qopen (path, "w");
@ -289,7 +281,6 @@ Host_WriteConfiguration (void)
}
}
/*
SV_ClientPrintf
@ -299,8 +290,8 @@ Host_WriteConfiguration (void)
void
SV_ClientPrintf (const char *fmt, ...)
{
va_list argptr;
char string[1024];
va_list argptr;
va_start (argptr, fmt);
vsnprintf (string, sizeof (string), fmt, argptr);
@ -310,7 +301,6 @@ SV_ClientPrintf (const char *fmt, ...)
MSG_WriteString (&host_client->message, string);
}
/*
SV_BroadcastPrintf
@ -319,9 +309,9 @@ SV_ClientPrintf (const char *fmt, ...)
void
SV_BroadcastPrintf (const char *fmt, ...)
{
va_list argptr;
char string[1024];
int i;
va_list argptr;
va_start (argptr, fmt);
vsnprintf (string, sizeof (string), fmt, argptr);
@ -334,7 +324,6 @@ SV_BroadcastPrintf (const char *fmt, ...)
}
}
/*
Host_ClientCommands
@ -343,8 +332,8 @@ SV_BroadcastPrintf (const char *fmt, ...)
void
Host_ClientCommands (const char *fmt, ...)
{
va_list argptr;
char string[1024];
va_list argptr;
va_start (argptr, fmt);
vsnprintf (string, sizeof (string), fmt, argptr);
@ -354,7 +343,6 @@ Host_ClientCommands (const char *fmt, ...)
MSG_WriteString (&host_client->message, string);
}
/*
SV_DropClient
@ -364,15 +352,15 @@ Host_ClientCommands (const char *fmt, ...)
void
SV_DropClient (qboolean crash)
{
int saveSelf;
int i;
client_t *client;
int saveSelf, i;
if (!crash) {
// send any final messages (don't check for errors)
if (NET_CanSendMessage (host_client->netconnection)) {
MSG_WriteByte (&host_client->message, svc_disconnect);
NET_SendMessage (host_client->netconnection, &host_client->message);
NET_SendMessage (host_client->netconnection,
&host_client->message);
}
if (host_client->edict && host_client->spawned) {
@ -388,17 +376,17 @@ SV_DropClient (qboolean crash)
Sys_Printf ("Client %s removed\n", host_client->name);
}
// break the net connection
// break the net connection
NET_Close (host_client->netconnection);
host_client->netconnection = NULL;
// free the client (the body stays around)
// free the client (the body stays around)
host_client->active = false;
host_client->name[0] = 0;
host_client->old_frags = -999999;
net_activeconnections--;
// send notification to all clients
// send notification to all clients
for (i = 0, client = svs.clients; i < svs.maxclients; i++, client++) {
if (!client->active)
continue;
@ -414,7 +402,6 @@ SV_DropClient (qboolean crash)
}
}
/*
Host_ShutdownServer
@ -423,22 +410,21 @@ SV_DropClient (qboolean crash)
void
Host_ShutdownServer (qboolean crash)
{
int i;
int count;
sizebuf_t buf;
char message[4];
double start;
int count, i;
sizebuf_t buf;
if (!sv.active)
return;
sv.active = false;
// stop all client sounds immediately
// stop all client sounds immediately
if (cls.state == ca_connected)
CL_Disconnect ();
// flush any pending messages - like the score!!!
// flush any pending messages - like the score!!!
start = Sys_DoubleTime ();
do {
count = 0;
@ -460,7 +446,7 @@ Host_ShutdownServer (qboolean crash)
}
while (count);
// make sure all the clients know we're disconnecting
// make sure all the clients know we're disconnecting
buf.data = message;
buf.maxsize = 4;
buf.cursize = 0;
@ -476,14 +462,11 @@ Host_ShutdownServer (qboolean crash)
if (host_client->active)
SV_DropClient (crash);
//
// clear structures
//
// clear structures
memset (&sv, 0, sizeof (sv));
memset (svs.clients, 0, svs.maxclientslimit * sizeof (client_t));
}
/*
Host_ClearMemory
@ -504,10 +487,6 @@ Host_ClearMemory (void)
memset (&cl, 0, sizeof (cl));
}
//============================================================================
/*
Host_FilterTime
@ -537,7 +516,6 @@ Host_FilterTime (float time)
return true;
}
/*
Host_GetConsoleCommands
@ -556,20 +534,19 @@ Host_GetConsoleCommands (void)
}
}
#ifdef FPS_20
void
_Host_ServerFrame (void)
{
// run the world state
// run the world state
*sv_globals.frametime = host_frametime;
// read client messages
// read client messages
SV_RunClients ();
// move things around and think
// always pause in single player if in console or menus
// move things around and think
// always pause in single player if in console or menus
if (!sv.paused && (svs.maxclients > 1 || key_dest == key_game))
SV_Physics ();
}
@ -577,16 +554,15 @@ _Host_ServerFrame (void)
void
Host_ServerFrame (void)
{
float save_host_frametime;
float temp_host_frametime;
float save_host_frametime, temp_host_frametime;
// run the world state
// run the world state
*sv_globals.frametime = host_frametime;
// set the time and clear the general datagram
// set the time and clear the general datagram
SV_ClearDatagram ();
// check for new clients
// check for new clients
SV_CheckForNewClients ();
temp_host_frametime = save_host_frametime = host_frametime;
@ -600,7 +576,7 @@ Host_ServerFrame (void)
}
host_frametime = save_host_frametime;
// send all messages to the clients
// send all messages to the clients
SV_SendClientMessages ();
}
@ -609,30 +585,29 @@ Host_ServerFrame (void)
void
Host_ServerFrame (void)
{
// run the world state
// run the world state
*sv_globals.frametime = host_frametime;
// set the time and clear the general datagram
// set the time and clear the general datagram
SV_ClearDatagram ();
// check for new clients
// check for new clients
SV_CheckForNewClients ();
// read client messages
// read client messages
SV_RunClients ();
// move things around and think
// always pause in single player if in console or menus
// move things around and think
// always pause in single player if in console or menus
if (!sv.paused && (svs.maxclients > 1 || key_dest == key_game))
SV_Physics ();
// send all messages to the clients
// send all messages to the clients
SV_SendClientMessages ();
}
#endif
/*
Host_Frame
@ -641,22 +616,20 @@ Host_ServerFrame (void)
void
_Host_Frame (float time)
{
static double time1 = 0;
static double time2 = 0;
static double time3 = 0;
int pass1, pass2, pass3;
static double time1 = 0, time2 = 0, time3 = 0;
int pass1, pass2, pass3;
if (setjmp (host_abortserver))
return; // something bad happened, or the
// server disconnected
// keep the random time dependent
// keep the random time dependent
rand ();
// decide the simulation time
// decide the simulation time
if (!Host_FilterTime (time))
return; // don't run too fast, or packets
// will flood out
// will flood out
if (cls.state != ca_dedicated) {
// get new key events
@ -666,12 +639,12 @@ _Host_Frame (float time)
IN_Commands ();
}
// process console commands
// process console commands
Cbuf_Execute ();
NET_Poll ();
// if running the server locally, make intentions now
// if running the server locally, make intentions now
if (sv.active)
CL_SendCmd ();
@ -681,7 +654,7 @@ _Host_Frame (float time)
//
//-------------------
// check for commands typed to the host
// check for commands typed to the host
Host_GetConsoleCommands ();
if (sv.active)
@ -693,18 +666,18 @@ _Host_Frame (float time)
//
//-------------------
// if running the server remotely, send intentions now after
// the incoming messages have been read
// if running the server remotely, send intentions now after
// the incoming messages have been read
if (!sv.active)
CL_SendCmd ();
host_time += host_frametime;
// fetch results from server
// fetch results from server
if (cls.state == ca_connected) {
CL_ReadFromServer ();
}
// update video
// update video
if (host_speeds->int_val)
time1 = Sys_DoubleTime ();
@ -722,7 +695,7 @@ _Host_Frame (float time)
if (host_speeds->int_val)
time2 = Sys_DoubleTime ();
// update audio
// update audio
if (cls.signon == SIGNONS) {
S_Update (r_origin, vpn, vright, vup);
R_DecayLights (host_frametime);
@ -744,14 +717,13 @@ _Host_Frame (float time)
fps_count++;
}
void
Host_Frame (float time)
{
double time1, time2;
double time1, time2;
static double timetotal;
static int timecount;
int i, c, m;
int i, c, m;
static int timecount;
if (!serverprofile->int_val) {
_Host_Frame (time);
@ -780,20 +752,16 @@ Host_Frame (float time)
Con_Printf ("serverprofile: %2i clients %2i msec\n", c, m);
}
//============================================================================
extern VFile *vcrFile;
#define VCR_SIGNATURE 0x56435231
// "VCR1"
void
Host_InitVCR (quakeparms_t *parms)
{
int i, len, n;
char *p;
int i, len, n;
if (COM_CheckParm ("-playback")) {
if (com_argc != 2)
@ -850,13 +818,12 @@ Host_InitVCR (quakeparms_t *parms)
}
static int
check_quakerc (void)
{
VFile *f;
const char *l, *p;
int ret = 1;
VFile *f;
COM_FOpenFile ("quake.rc", &f);
if (!f)
@ -873,11 +840,9 @@ check_quakerc (void)
return ret;
}
void
Host_Init (quakeparms_t *parms)
{
if (standard_quake)
minimum_memory = MINIMUM_MEMORY;
else
@ -1017,7 +982,6 @@ Host_Init (quakeparms_t *parms)
CL_UpdateScreen (cl.time);
}
/*
Host_Shutdown
@ -1035,7 +999,7 @@ Host_Shutdown (void)
}
isdown = true;
// keep Con_Printf from trying to update the screen
// keep Con_Printf from trying to update the screen
scr_disabled_for_loading = true;
Host_WriteConfiguration ();

View file

@ -40,10 +40,9 @@
cvar_t *registered;
qboolean com_modified; // set true if using non-id files
int static_registered = 1; // only for startup check, then set
qboolean com_modified; // set true if using non-id files
qboolean msg_suppress_1 = 0;
void COM_Path_f (void);
@ -60,8 +59,8 @@ void COM_Path_f (void);
void
COM_CheckRegistered (void)
{
VFile *h;
unsigned short check[128];
VFile *h;
COM_FOpenFile ("gfx/pop.lmp", &h);
static_registered = 0;
@ -78,7 +77,6 @@ COM_CheckRegistered (void)
}
}
void
COM_Init (void)
{

View file

@ -39,7 +39,6 @@
#include <stdarg.h>
#include "QF/cmd.h"
#include "compat.h"
#include "QF/console.h"
#include "QF/cvar.h"
#include "QF/draw.h"
@ -51,27 +50,27 @@
#include "QF/va.h"
#include "client.h"
#include "compat.h"
int con_ormask;
console_t con_main;
console_t con_chat;
console_t *con; // point to either con_main or con_chat
int con_ormask;
int con_linewidth; // characters across screen
int con_totallines; // total lines in console scrollback
float con_cursorspeed = 4;
int con_notifylines; // scan lines to clear for notify lines
int con_vislines;
cvar_t *con_notifytime; // seconds
#define NUM_CON_TIMES 4
float con_cursorspeed = 4;
float con_times[NUM_CON_TIMES]; // realtime time the line was generated
// for transparent notify lines
int con_vislines;
int con_notifylines; // scan lines to clear for notify lines
qboolean con_debuglog;
qboolean con_initialized;
#define MAXCMDLINE 256
@ -79,8 +78,6 @@ extern char key_lines[32][MAXCMDLINE];
extern int edit_line;
extern int key_linepos;
qboolean con_initialized;
void
Con_ToggleConsole_f (void)
@ -100,7 +97,6 @@ Con_ToggleConsole_f (void)
Con_ClearNotify ();
}
void
Con_ToggleChat_f (void)
{
@ -119,7 +115,6 @@ Con_ToggleChat_f (void)
Con_ClearNotify ();
}
void
Con_Clear_f (void)
{
@ -130,7 +125,6 @@ Con_Clear_f (void)
con_main.display = con_main.current;
}
void
Con_ClearNotify (void)
{
@ -140,7 +134,6 @@ Con_ClearNotify (void)
con_times[i] = 0;
}
void
Con_MessageMode_f (void)
{
@ -150,7 +143,6 @@ Con_MessageMode_f (void)
key_dest = key_message;
}
void
Con_MessageMode2_f (void)
{
@ -160,12 +152,11 @@ Con_MessageMode2_f (void)
key_dest = key_message;
}
void
Con_Resize (console_t *con)
{
int i, j, width, oldwidth, oldtotallines, numlines, numchars;
char tbuf[CON_TEXTSIZE];
int i, j, width, oldwidth, oldtotallines, numlines, numchars;
width = (vid.width >> 3) - 2;
@ -210,7 +201,6 @@ Con_Resize (console_t *con)
con->display = con->current;
}
/*
Con_CheckResize
@ -223,7 +213,6 @@ Con_CheckResize (void)
Con_Resize (&con_chat);
}
void
Con_Init (const char *plugin_name)
{
@ -248,16 +237,14 @@ Con_Init (const char *plugin_name)
con_initialized = true;
}
void
Con_Init_Cvars (void)
{
con_notifytime =
Cvar_Get ("con_notifytime", "3", CVAR_NONE, NULL,
"How long in seconds messages are displayed on screen");
con_notifytime = Cvar_Get ("con_notifytime", "3", CVAR_NONE, NULL,
"How long in seconds messages are displayed on "
"screen");
}
void
Con_Linefeed (void)
{
@ -271,7 +258,6 @@ Con_Linefeed (void)
' ', con_linewidth);
}
/*
Con_Print
@ -282,10 +268,8 @@ Con_Linefeed (void)
void
Con_Print (const char *txt)
{
int y;
int c, l;
int mask, c, l, y;
static int cr;
int mask;
// echo to debugging console
Sys_Printf ("%s", txt);
@ -350,11 +334,7 @@ Con_Print (const char *txt)
}
}
/*
DRAWING
*/
/* DRAWING */
/*
Con_DrawInput
@ -364,10 +344,9 @@ Con_Print (const char *txt)
void
Con_DrawInput (void)
{
int y;
int i;
char *text;
char temp[MAXCMDLINE];
char *text;
int i, y;
if (key_dest != key_console && cls.state == ca_active)
return; // don't draw anything (always draw if not active)
@ -393,7 +372,6 @@ Con_DrawInput (void)
Draw_Character ((i + 1) << 3, con_vislines - 22, text[i]);
}
/*
Con_DrawNotify
@ -402,12 +380,9 @@ Con_DrawInput (void)
void
Con_DrawNotify (void)
{
int x, v;
char *text;
int i;
char *s, *text;
float time;
char *s;
int skip;
int skip, i, x, v;
v = 0;
for (i = con->current - NUM_CON_TIMES + 1; i <= con->current; i++) {
@ -459,7 +434,6 @@ Con_DrawNotify (void)
con_notifylines = v;
}
/*
Con_DrawConsole
@ -468,10 +442,8 @@ Con_DrawNotify (void)
void
Con_DrawConsole (int lines)
{
int i, x, y;
int rows;
char *text;
int row;
int row, rows, i, x, y;
if (lines <= 0)
return;
@ -514,13 +486,12 @@ Con_DrawConsole (int lines)
Con_DrawInput ();
}
void
Con_DrawDownload (int lines)
{
int i, j, x, y, n;
const char *text;
char dlbar[1024];
const char *text;
int i, j, x, y, n;
if (!cls.download)
return;
@ -573,10 +544,9 @@ Con_DrawDownload (int lines)
void
Con_CompleteCommandLine (void)
{
const char *cmd = "";
char *s;
int c, v, a, i;
int cmd_len;
char *s;
const char *cmd = "";
int cmd_len, c, v, a, i;
const char **list[3] = {0, 0, 0};
s = key_lines[edit_line] + 1;
@ -660,4 +630,3 @@ Con_CompleteCommandLine (void)
if (list[i])
free (list[i]);
}

View file

@ -38,21 +38,23 @@
#ifdef HAVE_CTYPE_H
# include <ctype.h>
#endif
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include "compat.h"
#include "QF/console.h"
#include "QF/sys.h"
#include "QF/cvar.h"
#include "QF/vfs.h"
#include "QF/zone.h"
#include "QF/sys.h"
#include "QF/console.h"
#include "compat.h"
#include "crudefile.h"
int cf_maxsize; // max combined file size (eg quota)
int cf_cursize; // current combined file size
typedef struct cf_file_s {
VFile *file;
char *path;
@ -61,15 +63,17 @@ typedef struct cf_file_s {
int writtento;
char mode; // 'r' for read, 'w' for write
} cf_file_t;
cf_file_t * cf_filep;
int cf_filepcount; // elements in array
int cf_openfiles; // used elements
cvar_t *crudefile_quota;
cf_file_t *cf_filep;
cvar_t *crudefile_quota;
int cf_filepcount; // elements in array
int cf_openfiles; // used elements
#define CF_DIR "cf/"
#define CF_MAXFILES 100
#define CF_BUFFERSIZE 256
/*
CF_ValidDesc
@ -93,12 +97,14 @@ int
CF_AlreadyOpen (const char * path, char mode)
{
int i;
for (i = 0; i < cf_filepcount; i++) {
if (!cf_filep[i].file)
continue;
if (mode == 'r' && cf_filep[i].mode == 'w' && strequal(path, cf_filep[i].path))
if (mode == 'r' && cf_filep[i].mode == 'w' &&
strequal (path, cf_filep[i].path))
return 1;
if (mode == 'w' && strequal(path, cf_filep[i].path))
if (mode == 'w' && strequal (path, cf_filep[i].path))
return 1;
}
return 0;
@ -128,12 +134,12 @@ CF_GetFileSize (const char *path)
void
CF_BuildQuota ()
{
DIR *dir;
char *file, *path;
struct dirent *i;
char *path;
char *file;
DIR *dir;
path = Hunk_TempAlloc (strlen (com_gamedir) + 1 + strlen (CF_DIR) + 256 + 1);
path = Hunk_TempAlloc (strlen (com_gamedir) + 1 + strlen (CF_DIR) + 256 +
1);
if (!path)
return;
@ -164,7 +170,9 @@ void
CF_Init ()
{
CF_BuildQuota();
crudefile_quota = Cvar_Get ("crudefile_quota", "-1", CVAR_ROM, NULL, "Maximum space available to the Crude File system, -1 to totally disable file writing");
crudefile_quota = Cvar_Get ("crudefile_quota", "-1", CVAR_ROM, NULL,
"Maximum space available to the Crude File "
"system, -1 to totally disable file writing");
cf_maxsize = crudefile_quota->int_val;
}
@ -177,9 +185,11 @@ void
CF_CloseAllFiles ()
{
int i;
for (i = 0; i < cf_filepcount; i++)
if (cf_filep[i].file) {
Con_DPrintf ("Warning: closing Crude File %d left over from last map\n", i);
Con_DPrintf ("Warning: closing Crude File %d left over from last "
"map\n", i);
CF_Close(i);
}
}
@ -194,12 +204,9 @@ CF_CloseAllFiles ()
int
CF_Open (const char *path, const char *mode)
{
char *fullpath;
char *fullpath, *j;
int desc, oldsize, i;
VFile *file;
int desc;
int i;
char *j;
int oldsize;
if (cf_openfiles >= CF_MAXFILES) {
return -1;
@ -222,7 +229,8 @@ CF_Open (const char *path, const char *mode)
return -1;
}
fullpath = malloc(strlen(com_gamedir) + 1 + strlen(CF_DIR) + strlen(path) + 1);
fullpath = malloc(strlen(com_gamedir) + 1 + strlen(CF_DIR) + strlen(path) +
1);
if (!fullpath) {
return -1;
}
@ -320,7 +328,8 @@ CF_Read (int desc)
do {
int foo;
if (cf_filep[desc].size <= len) {
char *t = realloc (cf_filep[desc].buf, cf_filep[desc].size + CF_BUFFERSIZE);
char *t = realloc (cf_filep[desc].buf, cf_filep[desc].size +
CF_BUFFERSIZE);
if (!t) {
Sys_Error ("CF_Read: memory allocation error!");
}
@ -350,7 +359,8 @@ CF_Write (int desc, const char *buf) // should be const char *, but Qwrite isn't
{
int len;
if (!CF_ValidDesc(desc) || cf_filep[desc].mode != 'w' || cf_cursize >= cf_maxsize) {
if (!CF_ValidDesc(desc) || cf_filep[desc].mode != 'w' || cf_cursize >=
cf_maxsize) {
return 0;
}

View file

@ -44,17 +44,18 @@
#include "QF/info.h"
#include "QF/qargs.h"
#include "QF/vfs.h"
#include "game.h"
#include "server.h"
extern qboolean is_server;
/*
SV_Gamedir_f
Sets the gamedir and path to a different directory.
*/
void
SV_Gamedir_f (void)
{
@ -86,9 +87,6 @@ SV_Gamedir_f (void)
}
}
/*
Game_Init
*/
void
Game_Init (void)
{

View file

@ -38,7 +38,6 @@
#include <limits.h>
#include "compat.h"
#include "QF/console.h"
#include "QF/locs.h"
#include "QF/qtypes.h"
@ -46,25 +45,27 @@
#include "QF/vfs.h"
#include "client.h"
#include "compat.h"
#define LOCATION_BLOCK 128 // 128 locations per block.
location_t **locations = NULL;
int locations_alloced = 0;
int locations_count = 0;
int location_blocks = 0;
int locations_alloced = 0;
int locations_count = 0;
int location_blocks = 0;
void locs_add (vec3_t location, const char *name);
void locs_load (const char *filename);
void locs_free (void);
void locs_more (void);
int
locs_nearest (vec3_t loc)
{
location_t *cur;
float best_distance = 9999999, distance;
int i, j = -1;
location_t *cur;
for (i = 0; i < locations_count; i++) {
cur = locations[i];
@ -81,6 +82,7 @@ location_t *
locs_find (vec3_t target)
{
int i;
i = locs_nearest(target);
if (i == -1)
return NULL;
@ -111,13 +113,12 @@ locs_add (vec3_t location, const char *name)
void
locs_load (const char *filename)
{
VFile *file;
const char *line;
char tmp[PATH_MAX], foundname[MAX_OSPATH];
char *t1, *t2;
vec3_t loc;
char tmp[PATH_MAX];
char foundname[MAX_OSPATH];
const char *line;
int templength = 0;
vec3_t loc;
VFile *file;
snprintf(tmp,sizeof(tmp), "maps/%s",filename);
templength = _COM_FOpenFile (tmp, &file, foundname, 1);
@ -190,9 +191,9 @@ locs_more (void)
void
locs_save (const char *filename, qboolean gz)
{
VFile *locfd;
int i;
char locfile[MAX_OSPATH];
int i;
VFile *locfd;
if (gz) {
if (strncmp(filename + strlen(filename) - 3,".gz",3) != 0)
@ -224,14 +225,15 @@ locs_mark (vec3_t loc, const char *desc)
/*
locs_edit
call with description to modify location description
call with NULL description to modify location vectors
*/
void
locs_edit (vec3_t loc, const char *desc)
{
int i;
if (locations_count) {
i = locs_nearest (loc);
if (!desc) {
@ -252,6 +254,7 @@ void
locs_del (vec3_t loc)
{
int i;
if (locations_count) {
i = locs_nearest (loc);
Con_Printf ("Removing location marker for %s\n",

View file

@ -37,21 +37,21 @@
#endif
#include "QF/msg.h"
#include "net.h"
#include "protocol.h"
#include "QF/qendian.h"
#include "QF/sys.h"
#include "net.h"
#include "protocol.h"
struct usercmd_s nullcmd;
void
MSG_WriteDeltaUsercmd (sizebuf_t *buf, usercmd_t *from, usercmd_t *cmd)
{
int bits;
//
// send the movement message
//
// send the movement message
bits = 0;
if (cmd->angles[0] != from->angles[0])
bits |= CM_ANGLE1;
@ -102,7 +102,7 @@ MSG_ReadDeltaUsercmd (usercmd_t *from, usercmd_t *move)
bits = MSG_ReadByte (net_message);
// read current angles
// read current angles
if (bits & CM_ANGLE1)
move->angles[0] = MSG_ReadAngle16 (net_message);
if (bits & CM_ANGLE2)
@ -110,7 +110,7 @@ MSG_ReadDeltaUsercmd (usercmd_t *from, usercmd_t *move)
if (bits & CM_ANGLE3)
move->angles[2] = MSG_ReadAngle16 (net_message);
// read movement
// read movement
if (bits & CM_FORWARD)
move->forwardmove = MSG_ReadShort (net_message);
if (bits & CM_SIDE)
@ -118,13 +118,13 @@ MSG_ReadDeltaUsercmd (usercmd_t *from, usercmd_t *move)
if (bits & CM_UP)
move->upmove = MSG_ReadShort (net_message);
// read buttons
// read buttons
if (bits & CM_BUTTONS)
move->buttons = MSG_ReadByte (net_message);
if (bits & CM_IMPULSE)
move->impulse = MSG_ReadByte (net_message);
// read time to run command
// read time to run command
move->msec = MSG_ReadByte (net_message);
}

View file

@ -30,7 +30,9 @@
# include "config.h"
#endif
#ifndef _WIN32
# include <unistd.h>
# ifdef HAVE_UNISTD_H
# include <unistd.h>
# endif
#else
# include <windows.h>
#endif
@ -41,76 +43,72 @@
# include <strings.h>
#endif
#include <time.h>
#include <stdarg.h>
#include <time.h>
#include "client.h"
#include "compat.h"
#include "QF/console.h"
#include "QF/cvar.h"
#include "QF/msg.h"
#include "client.h"
#include "compat.h"
#include "net.h"
#define PACKET_HEADER 8
/*
packet header
-------------
31 sequence
1 does this message contain a reliable payload
31 acknowledge sequence
1 acknowledge receipt of even/odd message
16 qport
packet header
-------------
31 sequence
1 does this message contain a reliable payload
31 acknowledge sequence
1 acknowledge receipt of even/odd message
16 qport
The remote connection never knows if it missed a reliable message, the
local side detects that it has been dropped by seeing a sequence acknowledge
higher thatn the last reliable sequence, but without the correct evon/odd
bit for the reliable set.
The remote connection never knows if it missed a reliable message, the
local side detects that it has been dropped by seeing a sequence acknowledge
higher thatn the last reliable sequence, but without the correct evon/odd
bit for the reliable set.
If the sender notices that a reliable message has been dropped, it will be
retransmitted. It will not be retransmitted again until a message after the
retransmit has been acknowledged and the reliable still failed to get there.
If the sender notices that a reliable message has been dropped, it will be
retransmitted. It will not be retransmitted again until a message after
the retransmit has been acknowledged and the reliable still failed to get there.
if the sequence number is -1, the packet should be handled without a netcon
if the sequence number is -1, the packet should be handled without a netcon
The reliable message can be added to at any time by doing
MSG_Write* (&netchan->message, <data>).
The reliable message can be added to at any time by doing
MSG_Write* (&netchan->message, <data>).
If the message buffer is overflowed, either by a single message, or by
multiple frames worth piling up while the last reliable transmit goes
unacknowledged, the netchan signals a fatal error.
If the message buffer is overflowed, either by a single message, or by
multiple frames worth piling up while the last reliable transmit goes
unacknowledged, the netchan signals a fatal error.
Reliable messages are always placed first in a packet, then the unreliable
message is included if there is sufficient room.
Reliable messages are always placed first in a packet, then the unreliable
message is included if there is sufficient room.
To the receiver, there is no distinction between the reliable and unreliable
parts of the message, they are just processed out as a single larger message.
To the receiver, there is no distinction between the reliable and unreliable
parts of the message, they are just processed out as a single larger message.
Illogical packet sequence numbers cause the packet to be dropped, but do
not kill the connection. This, combined with the tight window of valid
reliable acknowledgement numbers provides protection against malicious
address spoofing.
The qport field is a workaround for bad address translating routers that
sometimes remap the client's source port on a packet during gameplay.
If the base part of the net address matches and the qport matches, then the
channel matches even if the IP port differs. The IP port should be updated
to the new value before sending out any replies.
Illogical packet sequence numbers cause the packet to be dropped, but do
not kill the connection. This, combined with the tight window of valid
reliable acknowledgement numbers provides protection against malicious
address spoofing.
The qport field is a workaround for bad address translating routers that
sometimes remap the client's source port on a packet during gameplay.
If the base part of the net address matches and the qport matches, then the
channel matches even if the IP port differs. The IP port should be updated
to the new value before sending out any replies.
*/
int net_drop;
cvar_t *showpackets;
cvar_t *showdrop;
cvar_t *qport;
extern qboolean is_server;
/*
Netchan_Init
*/
void
Netchan_Init (void)
{
@ -130,12 +128,14 @@ void
Netchan_Init_Cvars (void)
{
showpackets = Cvar_Get ("showpackets", "0", CVAR_NONE, NULL,
"Show all network packets");
showdrop = Cvar_Get ("showdrop", "0", CVAR_NONE, NULL,
"Toggle the display of how many packets you are dropping");
qport = Cvar_Get ("qport", "0", CVAR_NONE, NULL,
"The internal port number for the game networking code."
"Useful for clients who use multiple connections through one IP address (NAT/IP-MASQ) because default port is random.");
"Show all network packets");
showdrop = Cvar_Get ("showdrop", "0", CVAR_NONE, NULL, "Toggle the "
"display of how many packets you are dropping");
qport = Cvar_Get ("qport", "0", CVAR_NONE, NULL, "The internal port "
"number for the game networking code. Useful for "
"clients who use multiple connections through one "
"IP address (NAT/IP-MASQ) because default port is "
"random.");
}
/*
@ -146,10 +146,10 @@ Netchan_Init_Cvars (void)
void
Netchan_OutOfBand (netadr_t adr, int length, byte * data)
{
sizebuf_t send;
byte send_buf[MAX_MSGLEN + PACKET_HEADER];
sizebuf_t send;
// write the packet header
// write the packet header
send.data = send_buf;
send.maxsize = sizeof (send_buf);
send.cursize = 0;
@ -157,7 +157,7 @@ Netchan_OutOfBand (netadr_t adr, int length, byte * data)
MSG_WriteLong (&send, -1); // -1 sequence means out of band
SZ_Write (&send, data, length);
// send the datagram
// send the datagram
// zoid, no input in demo playback mode
if (!is_server) {
if (!cls.demoplayback)
@ -175,8 +175,8 @@ Netchan_OutOfBand (netadr_t adr, int length, byte * data)
void
Netchan_OutOfBandPrint (netadr_t adr, const char *format, ...)
{
va_list argptr;
static char string[8192]; // ?? why static?
va_list argptr;
va_start (argptr, format);
vsnprintf (string, sizeof (string), format, argptr);
@ -186,7 +186,6 @@ Netchan_OutOfBandPrint (netadr_t adr, const char *format, ...)
Netchan_OutOfBand (adr, strlen (string), (byte *) string);
}
/*
Netchan_Setup
@ -209,13 +208,13 @@ Netchan_Setup (netchan_t *chan, netadr_t adr, int qport)
chan->rate = 1.0 / 2500;
}
#define MAX_BACKUP 200
/*
Netchan_CanPacket
Returns true if the bandwidth choke isn't active
*/
#define MAX_BACKUP 200
qboolean
Netchan_CanPacket (netchan_t *chan)
{
@ -224,7 +223,6 @@ Netchan_CanPacket (netchan_t *chan)
return false;
}
/*
Netchan_CanReliable
@ -246,32 +244,32 @@ qboolean ServerPaused (void);
tries to send an unreliable message to a connection, and handles the
transmition / retransmition of the reliable messages.
A 0 length will still generate a packet and deal with the reliable messages.
0 length will still generate a packet and deal with the reliable messages.
*/
void
Netchan_Transmit (netchan_t *chan, int length, byte * data)
{
sizebuf_t send;
byte send_buf[MAX_MSGLEN + PACKET_HEADER];
qboolean send_reliable;
unsigned int w1, w2;
int i;
unsigned int w1, w2;
qboolean send_reliable;
sizebuf_t send;
// check for message overflow
// check for message overflow
if (chan->message.overflowed) {
chan->fatal_error = true;
Con_Printf ("%s:Outgoing message overflow\n",
NET_AdrToString (chan->remote_address));
return;
}
// if the remote side dropped the last reliable message, resend it
// if the remote side dropped the last reliable message, resend it
send_reliable = false;
if (chan->incoming_acknowledged > chan->last_reliable_sequence
&& chan->incoming_reliable_acknowledged != chan->reliable_sequence)
send_reliable = true;
// if the reliable transmit buffer is empty, copy the current message out
// if the reliable transmit buffer is empty, copy the current message out
if (!chan->reliable_length && chan->message.cursize) {
memcpy (chan->reliable_buf, chan->message_buf, chan->message.cursize);
chan->reliable_length = chan->message.cursize;
@ -279,7 +277,7 @@ Netchan_Transmit (netchan_t *chan, int length, byte * data)
chan->reliable_sequence ^= 1;
send_reliable = true;
}
// write the packet header
// write the packet header
send.data = send_buf;
send.maxsize = sizeof (send_buf);
send.cursize = 0;
@ -296,16 +294,16 @@ Netchan_Transmit (netchan_t *chan, int length, byte * data)
if (!is_server)
MSG_WriteShort (&send, cls.qport);
// copy the reliable message to the packet first
// copy the reliable message to the packet first
if (send_reliable) {
SZ_Write (&send, chan->reliable_buf, chan->reliable_length);
chan->last_reliable_sequence = chan->outgoing_sequence;
}
// add the unreliable part if space is available
// add the unreliable part if space is available
if (send.maxsize - send.cursize >= length)
SZ_Write (&send, data, length);
// send the datagram
// send the datagram
i = chan->outgoing_sequence & (MAX_LATENT - 1);
chan->outgoing_size[i] = send.cursize;
chan->outgoing_time[i] = realtime;
@ -328,7 +326,6 @@ Netchan_Transmit (netchan_t *chan, int length, byte * data)
Con_Printf ("--> s=%i(%i) a=%i(%i) %i\n", chan->outgoing_sequence,
send_reliable, chan->incoming_sequence,
chan->incoming_reliable_sequence, send.cursize);
}
/*
@ -340,9 +337,8 @@ Netchan_Transmit (netchan_t *chan, int length, byte * data)
qboolean
Netchan_Process (netchan_t *chan)
{
unsigned int sequence, sequence_ack;
unsigned int reliable_ack, reliable_message;
int qport;
int qport;
unsigned int reliable_ack, reliable_message, sequence, sequence_ack;
if (is_server) {
if (!NET_CompareAdr (net_from, chan->remote_address))
@ -352,7 +348,7 @@ Netchan_Process (netchan_t *chan)
!NET_CompareAdr (net_from, chan->remote_address)) return false;
}
// get sequence numbers
// get sequence numbers
MSG_BeginReading (net_message);
sequence = MSG_ReadLong (net_message);
sequence_ack = MSG_ReadLong (net_message);
@ -371,7 +367,7 @@ Netchan_Process (netchan_t *chan)
Con_Printf ("<-- s=%i(%i) a=%i(%i) %i\n", sequence, reliable_message,
sequence_ack, reliable_ack, net_message->message->cursize);
// get a rate estimation
// get a rate estimation
#if 0
if (chan->outgoing_sequence - sequence_ack < MAX_LATENT) {
int i;
@ -398,9 +394,7 @@ Netchan_Process (netchan_t *chan)
}
#endif
//
// discard stale or duplicated packets
//
// discard stale or duplicated packets
if (sequence <= (unsigned int) chan->incoming_sequence) {
if (showdrop->int_val)
Con_Printf ("%s:Out of order packet %i at %i\n",
@ -408,9 +402,8 @@ Netchan_Process (netchan_t *chan)
chan->incoming_sequence);
return false;
}
//
// dropped packets don't keep the message from being used
//
// dropped packets don't keep the message from being used
net_drop = sequence - (chan->incoming_sequence + 1);
if (net_drop > 0) {
chan->drop_count += 1;
@ -421,26 +414,22 @@ Netchan_Process (netchan_t *chan)
sequence - (chan->incoming_sequence + 1)
, sequence);
}
//
// if the current outgoing reliable message has been acknowledged
// clear the buffer to make way for the next
//
// if the current outgoing reliable message has been acknowledged
// clear the buffer to make way for the next
if (reliable_ack == (unsigned int) chan->reliable_sequence)
chan->reliable_length = 0; // it has been received
//
// if this message contains a reliable message, bump incoming_reliable_sequence
//
// if this message contains a reliable message, bump
// incoming_reliable_sequence
chan->incoming_sequence = sequence;
chan->incoming_acknowledged = sequence_ack;
chan->incoming_reliable_acknowledged = reliable_ack;
if (reliable_message)
chan->incoming_reliable_sequence ^= 1;
//
// the message can now be read from the current message pointer
// update statistics counters
//
// the message can now be read from the current message pointer
// update statistics counters
chan->frame_latency = chan->frame_latency * OLD_AVG
+ (chan->outgoing_sequence - sequence_ack) * (1.0 - OLD_AVG);
chan->frame_rate = chan->frame_rate * OLD_AVG

View file

@ -31,12 +31,18 @@
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#ifdef HAVE_IO_H
# include <io.h>
#endif
#ifdef HAVE_STRING_H
# include <string.h>
#endif
#ifdef HAVE_STRINGS_H
# include <strings.h>
#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
// FIXME: we did support Quake1 protocol too...
@ -44,12 +50,6 @@
#include <ctype.h>
#include <stdarg.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_IO_H
#include <io.h>
#endif
#include "QF/cmd.h"
#include "QF/cvar.h"
@ -68,14 +68,13 @@ cvar_t *net_loglevel;
//extern server_t sv;
extern qboolean is_server;
void Analyze_Server_Packet (const byte * data, int len);
void Analyze_Client_Packet (const byte * data, int len);
void Parse_Server_Packet (void);
void Parse_Client_Packet (void);
int Net_LogStart (const char *fname);
void Net_LogStop (void);
void Analyze_Server_Packet (const byte * data, int len);
void Analyze_Client_Packet (const byte * data, int len);
void Parse_Server_Packet (void);
void Parse_Client_Packet (void);
void Net_LogStop (void);
// note: this is SUPPOSED to be duplicate, like many others
const char *svc_string[] = {
@ -93,7 +92,6 @@ const char *svc_string[] = {
// should be \n terminated
"svc_setangle", // [vec3] set the view angle to this
// absolute value
"svc_serverdata", // [long] version ...
"svc_lightstyle", // [byte] [string]
"svc_updatename", // [byte] [string]
@ -104,11 +102,9 @@ const char *svc_string[] = {
"svc_particle", // [vec3] <variable>
"svc_damage", // [byte] impact [byte] blood [vec3]
// from
"svc_spawnstatic",
"svc_spawnbinary",
"svc_spawnbaseline",
"svc_temp_entity", // <variable>
"svc_setpause",
"svc_signonnum",
@ -120,13 +116,10 @@ const char *svc_string[] = {
"svc_finale", // [string] music [string] text
"svc_cdtrack", // [byte] track [byte] looptrack
"svc_sellscreen",
"svc_smallkick", // Quake svc_cutscene
"svc_bigkick",
"svc_updateping",
"svc_updateentertime",
"svc_updatestatlong",
"svc_muzzleflash",
"svc_updateuserinfo",
@ -140,7 +133,6 @@ const char *svc_string[] = {
"svc_deltapacketentities",
"svc_maxspeed",
"svc_entgravity",
"svc_setinfo",
"svc_serverinfo",
"svc_updatepl",
@ -171,7 +163,7 @@ const char *clc_string[] = {
};
#ifndef svc_spawnbinary
#define svc_spawnbinary 21
# define svc_spawnbinary 21
#endif
// Quake1, obsolete for QW
@ -189,17 +181,17 @@ static const char **Net_sound_precache;
static sizebuf_t _packet;
static msg_t packet = {0, 0, &_packet};
/*
NET_LogPrintf
Prints packet to logfile, adds time stamp etc.
*/
void
Net_LogPrintf (char *fmt, ...)
{
va_list argptr;
char text[2048];
va_list argptr;
va_start (argptr, fmt);
vsnprintf (text, sizeof (text), fmt, argptr);
@ -277,17 +269,15 @@ Log_Incoming_Packet (const char *p, int len)
return;
if (is_server) {
Net_LogPrintf
("\n<<<<<<<<<<<<<<<<<<<<< client to server %d bytes: <<<<<<<<<<<<<<<<<<<<<<<<\n",
len);
Net_LogPrintf ("\n<<<<<<<<<<<<<<<<<<<<< client to server %d bytes: "
"<<<<<<<<<<<<<<<<<<<<<<<<\n", len);
if (net_loglevel->int_val != 3)
hex_dump_buf ((unsigned char *) p, len);
if (net_loglevel->int_val > 1)
Analyze_Client_Packet (p, len);
} else {
Net_LogPrintf
("\n>>>>>>>>>>>>>>>>>>>>> server to client %d bytes: >>>>>>>>>>>>>>>>>>>>>>>>\n",
len);
Net_LogPrintf ("\n>>>>>>>>>>>>>>>>>>>>> server to client %d bytes: "
">>>>>>>>>>>>>>>>>>>>>>>>\n", len);
if (net_loglevel->int_val != 3)
hex_dump_buf ((unsigned char *) p, len);;
if (net_loglevel->int_val > 1)
@ -303,17 +293,15 @@ Log_Outgoing_Packet (const char *p, int len)
return;
if (is_server) {
Net_LogPrintf
("\n>>>>>>>>>>>>>>>>>>>>> server to client %d bytes: >>>>>>>>>>>>>>>>>>>>>>>>\n",
len);
Net_LogPrintf ("\n>>>>>>>>>>>>>>>>>>>>> server to client %d bytes: "
">>>>>>>>>>>>>>>>>>>>>>>>\n", len);
if (net_loglevel->int_val != 3)
hex_dump_buf ((unsigned char *) p, len);;
if (net_loglevel->int_val > 1)
Analyze_Server_Packet (p, len);
} else {
Net_LogPrintf
("\n<<<<<<<<<<<<<<<<<<<<< client to server %d bytes: <<<<<<<<<<<<<<<<<<<<<<<<\n",
len);
Net_LogPrintf ("\n<<<<<<<<<<<<<<<<<<<<< client to server %d bytes: "
"<<<<<<<<<<<<<<<<<<<<<<<<\n", len);
if (net_loglevel->int_val != 3)
hex_dump_buf ((unsigned char *) p, len);;
if (net_loglevel->int_val > 1)
@ -325,10 +313,10 @@ Log_Outgoing_Packet (const char *p, int len)
void
Log_Delta(int bits)
{
entity_state_t to;
int i;
entity_state_t to;
int i;
Net_LogPrintf ("\n\t");
Net_LogPrintf ("\n\t");
// set everything to the state we are delta'ing from
@ -426,9 +414,9 @@ Analyze_Server_Packet (const byte * data, int len)
void
Parse_Server_Packet ()
{
long seq1, seq2;
int c, i, ii, iii, mask1, mask2;
char *s;
int c, i, ii, iii, mask1, mask2;
long seq1, seq2;
seq1 = MSG_ReadLong (&packet);
if (packet.badread)
@ -455,12 +443,12 @@ Parse_Server_Packet ()
c = MSG_ReadByte (&packet);
if (c == -1)
break;
// Net_LogPrintf("\n<%ld,%ld> ",seq1 & 0x7FFFFFFF,seq2 & 0x7FFFFFFF);
// Net_LogPrintf("\n<%ld,%ld> ",seq1 & 0x7FFFFFFF,seq2 & 0x7FFFFFFF);
Net_LogPrintf ("<%06x> [0x%02x] ", MSG_GetReadCount (&packet), c);
if (c < 53)
Net_LogPrintf ("%s: ", svc_string[c]);
// else Net_LogPrintf("(UNK: %d): ",c);
// else Net_LogPrintf("(UNK: %d): ",c);
if (MSG_GetReadCount (&packet) > packet.message->cursize)
return;
@ -476,7 +464,8 @@ Parse_Server_Packet ()
break;
case svc_updatestat:
i = MSG_ReadByte (&packet);
Net_LogPrintf (" index: %d value: %d", i, MSG_ReadByte (&packet));
Net_LogPrintf (" index: %d value: %d", i, MSG_ReadByte
(&packet));
break;
case svc_version:
#ifdef QUAKEWORLD
@ -552,7 +541,8 @@ Parse_Server_Packet ()
#endif
break;
case svc_updatefrags:
Net_LogPrintf ("player: %d frags: %d", MSG_ReadByte (&packet),
Net_LogPrintf ("player: %d frags: %d", MSG_ReadByte
(&packet),
MSG_ReadShort (&packet));
break;
case svc_clientdata:
@ -568,7 +558,8 @@ Parse_Server_Packet ()
#ifdef QUAKEWORLD
Net_LogPrintf ("**QW OBSOLETE**");
#else
Net_LogPrintf ("%d %d", MSG_ReadByte (&packet), MSG_ReadByte ());
Net_LogPrintf ("%d %d", MSG_ReadByte (&packet),
MSG_ReadByte ());
#endif
break;
case svc_particle:
@ -586,19 +577,20 @@ Parse_Server_Packet ()
case svc_damage:
// FIXME: parse damage
Net_LogPrintf ("armor: %d health: %d", MSG_ReadByte (&packet),
MSG_ReadByte (&packet));
Net_LogPrintf ("armor: %d health: %d", MSG_ReadByte
(&packet), MSG_ReadByte (&packet));
Net_LogPrintf (" from %f,%f,%f", MSG_ReadCoord (&packet),
MSG_ReadCoord (&packet), MSG_ReadCoord (&packet));
MSG_ReadCoord (&packet), MSG_ReadCoord
(&packet));
break;
case svc_spawnstatic:
Net_LogPrintf ("Model: %d", MSG_ReadByte (&packet));
Net_LogPrintf (" Frame: %d Color: %d Skin: %",
MSG_ReadByte (&packet), MSG_ReadByte (&packet),
MSG_ReadByte (&packet));
MSG_ReadByte (&packet), MSG_ReadByte
(&packet), MSG_ReadByte (&packet));
for (i = 0; i < 3; i++)
Net_LogPrintf ("%d: %f %f", i + 1, MSG_ReadCoord (&packet),
MSG_ReadAngle (&packet));
Net_LogPrintf ("%d: %f %f", i + 1, MSG_ReadCoord
(&packet), MSG_ReadAngle (&packet));
break;
case svc_spawnbinary:
Net_LogPrintf ("**OBSOLETE**");
@ -626,25 +618,30 @@ Parse_Server_Packet ()
case 10:
case 11:
case 13:
Net_LogPrintf (" origin %f %f %f", MSG_ReadCoord (&packet),
MSG_ReadCoord (&packet), MSG_ReadCoord (&packet));
Net_LogPrintf (" origin %f %f %f", MSG_ReadCoord
(&packet), MSG_ReadCoord (&packet),
MSG_ReadCoord (&packet));
break;
case 5:
case 6:
case 9:
Net_LogPrintf (" created by %d", MSG_ReadShort (&packet));
Net_LogPrintf (" origin: %f,%f,%f",
MSG_ReadCoord (&packet), MSG_ReadCoord (&packet),
Net_LogPrintf (" created by %d", MSG_ReadShort
(&packet));
Net_LogPrintf (" origin: %f,%f,%f", MSG_ReadCoord
(&packet), MSG_ReadCoord (&packet),
MSG_ReadCoord (&packet));
Net_LogPrintf (" trace endpos: %f,%f,%f",
MSG_ReadCoord (&packet), MSG_ReadCoord (&packet),
MSG_ReadCoord (&packet),
MSG_ReadCoord (&packet),
MSG_ReadCoord (&packet));
break;
case 2:
case 12:
Net_LogPrintf (" count: %d", MSG_ReadByte (&packet));
printf (" origin: %f,%f,%f", MSG_ReadCoord (&packet),
MSG_ReadCoord (&packet), MSG_ReadCoord (&packet));
Net_LogPrintf (" count: %d", MSG_ReadByte
(&packet));
printf (" origin: %f,%f,%f", MSG_ReadCoord
(&packet), MSG_ReadCoord (&packet),
MSG_ReadCoord (&packet));
break;
default:
Net_LogPrintf (" unknown value %d for tempentity",
@ -672,8 +669,10 @@ Parse_Server_Packet ()
break;
case svc_spawnstaticsound:
Net_LogPrintf ("pos %f,%f,%f", MSG_ReadCoord (&packet),
MSG_ReadCoord (&packet), MSG_ReadCoord (&packet));
Net_LogPrintf ("%d %d %d", MSG_ReadByte (&packet), MSG_ReadByte (&packet),
MSG_ReadCoord (&packet), MSG_ReadCoord
(&packet));
Net_LogPrintf ("%d %d %d", MSG_ReadByte (&packet),
MSG_ReadByte (&packet),
MSG_ReadByte (&packet));
break;
case svc_intermission:
@ -720,7 +719,8 @@ Parse_Server_Packet ()
break;
case svc_download:
ii = MSG_ReadShort (&packet);
Net_LogPrintf ("%d bytes at %d", ii, MSG_ReadByte (&packet));
Net_LogPrintf ("%d bytes at %d", ii, MSG_ReadByte
(&packet));
for (i = 0; i < ii; i++)
MSG_ReadByte (&packet);
break;
@ -728,8 +728,9 @@ Parse_Server_Packet ()
Net_LogPrintf ("\n\tPlayer: %d", MSG_ReadByte (&packet));
mask1 = MSG_ReadShort (&packet);
Net_LogPrintf (" Mask1: %d", mask1);
Net_LogPrintf (" Origin: %f,%f,%f", MSG_ReadCoord (&packet),
MSG_ReadCoord (&packet), MSG_ReadCoord (&packet));
Net_LogPrintf (" Origin: %f,%f,%f", MSG_ReadCoord
(&packet), MSG_ReadCoord (&packet),
MSG_ReadCoord (&packet));
Net_LogPrintf (" Frame: %d", MSG_ReadByte (&packet));
if (mask1 & PF_MSEC)
@ -738,21 +739,29 @@ Parse_Server_Packet ()
if (mask1 & PF_COMMAND) {
mask2 = MSG_ReadByte (&packet); // command
if (mask2 & 0x01)
Net_LogPrintf (" Pitch: %f", MSG_ReadAngle16 (&packet));
Net_LogPrintf (" Pitch: %f", MSG_ReadAngle16
(&packet));
if (mask2 & 0x80)
Net_LogPrintf (" Yaw: %f", MSG_ReadAngle16 (&packet));
Net_LogPrintf (" Yaw: %f", MSG_ReadAngle16
(&packet));
if (mask2 & 0x02)
Net_LogPrintf (" Roll: %f", MSG_ReadAngle16 (&packet));
Net_LogPrintf (" Roll: %f", MSG_ReadAngle16
(&packet));
if (mask2 & 0x04)
Net_LogPrintf (" Speed1: %d", MSG_ReadShort (&packet));
Net_LogPrintf (" Speed1: %d", MSG_ReadShort
(&packet));
if (mask2 & 0x08)
Net_LogPrintf (" Speed2: %d", MSG_ReadShort (&packet));
Net_LogPrintf (" Speed2: %d", MSG_ReadShort
(&packet));
if (mask2 & 0x10)
Net_LogPrintf (" Speed3: %d", MSG_ReadShort (&packet));
Net_LogPrintf (" Speed3: %d", MSG_ReadShort
(&packet));
if (mask2 & 0x20)
Net_LogPrintf (" Flag: %d", MSG_ReadByte (&packet));
Net_LogPrintf (" Flag: %d", MSG_ReadByte
(&packet));
if (mask2 & 0x40)
Net_LogPrintf (" Impulse: %d", MSG_ReadByte (&packet));
Net_LogPrintf (" Impulse: %d", MSG_ReadByte
(&packet));
Net_LogPrintf (" Msec: %d", MSG_ReadByte (&packet));
}
if (mask1 & PF_VELOCITY1)
@ -769,7 +778,8 @@ Parse_Server_Packet ()
Net_LogPrintf (" Effects: %d", MSG_ReadByte (&packet));
if (mask1 & PF_WEAPONFRAME)
Net_LogPrintf (" Weapon frame: %d", MSG_ReadByte (&packet));
Net_LogPrintf (" Weapon frame: %d", MSG_ReadByte
(&packet));
break;
case svc_nails:
ii = MSG_ReadByte (&packet);
@ -822,22 +832,21 @@ Parse_Server_Packet ()
Net_LogPrintf ("\n\t*End of sound list*");
break;
case svc_packetentities:
while (1) {
mask1 = (unsigned short) MSG_ReadShort(&packet);
if (packet.badread) {
Net_LogPrintf ("Badread\n");
return;
}
if (!mask1) break;
while (1) {
mask1 = (unsigned short) MSG_ReadShort(&packet);
if (packet.badread) {
Net_LogPrintf ("Badread\n");
return;
}
if (!mask1) break;
if (mask1 & U_REMOVE) Net_LogPrintf("UREMOVE ");
Log_Delta(mask1);
}
Log_Delta(mask1);
}
break;
case svc_deltapacketentities:
Net_LogPrintf ("idx: %d", MSG_ReadByte (&packet));
return;
break;
break;
case svc_maxspeed:
Net_LogPrintf ("%f", MSG_ReadFloat (&packet));
break;
@ -850,12 +859,12 @@ Parse_Server_Packet ()
Net_LogPrintf ("Value: %s", MSG_ReadString (&packet));
break;
case svc_serverinfo:
Net_LogPrintf ("Name: %s Value: %s", MSG_ReadString (&packet),
MSG_ReadString (&packet));
Net_LogPrintf ("Name: %s Value: %s", MSG_ReadString
(&packet), MSG_ReadString (&packet));
break;
case svc_updatepl:
Net_LogPrintf ("Player: %d Ploss: %d", MSG_ReadByte (&packet),
MSG_ReadByte (&packet));
Net_LogPrintf ("Player: %d Ploss: %d", MSG_ReadByte
(&packet), MSG_ReadByte (&packet));
break;
default:
Net_LogPrintf ("**UNKNOWN**: [%d]", c);
@ -882,9 +891,8 @@ Analyze_Client_Packet (const byte * data, int len)
void
Parse_Client_Packet (void)
{
int i, c, ii;
int mask, i, c, ii;
long seq1, seq2;
int mask;
seq1 = MSG_ReadLong (&packet);
if (seq1 == -1) {
@ -909,8 +917,9 @@ Parse_Client_Packet (void)
c = MSG_ReadByte (&packet);
if (c == -1)
break;
// Net_LogPrintf("<%ld,%ld> ",seq1 & 0x7FFFFFFF,seq2 & 0x7FFFFFFF);
Net_LogPrintf ("\n<%06x> [0x%02x] ", MSG_GetReadCount (&packet), c);
// Net_LogPrintf("<%ld,%ld> ",seq1 & 0x7FFFFFFF,seq2 & 0x7FFFFFFF);
Net_LogPrintf ("\n<%06x> [0x%02x] ", MSG_GetReadCount (&packet),
c);
if (c < 8)
Net_LogPrintf ("%s: ", clc_string[c]);
@ -928,21 +937,29 @@ Parse_Client_Packet (void)
mask = MSG_ReadByte (&packet);
Net_LogPrintf ("\n\t(%d) mask = %02x", i, mask);
if (mask & 0x01)
Net_LogPrintf (" Tilt: %f", MSG_ReadAngle16 (&packet));
Net_LogPrintf (" Tilt: %f", MSG_ReadAngle16
(&packet));
if (mask & 0x80)
Net_LogPrintf (" Yaw: %f", MSG_ReadAngle16 (&packet));
Net_LogPrintf (" Yaw: %f", MSG_ReadAngle16
(&packet));
if (mask & 0x02)
Net_LogPrintf (" Roll: %f", MSG_ReadAngle16 (&packet));
Net_LogPrintf (" Roll: %f", MSG_ReadAngle16
(&packet));
if (mask & 0x04)
Net_LogPrintf (" Fwd: %d", MSG_ReadShort (&packet));
Net_LogPrintf (" Fwd: %d", MSG_ReadShort
(&packet));
if (mask & 0x08)
Net_LogPrintf (" Right: %d", MSG_ReadShort (&packet));
Net_LogPrintf (" Right: %d", MSG_ReadShort
(&packet));
if (mask & 0x10)
Net_LogPrintf (" Up: %d", MSG_ReadShort (&packet));
Net_LogPrintf (" Up: %d", MSG_ReadShort
(&packet));
if (mask & 0x20)
Net_LogPrintf (" Flags: %d", MSG_ReadByte (&packet));
Net_LogPrintf (" Flags: %d", MSG_ReadByte
(&packet));
if (mask & 0x40)
Net_LogPrintf (" Impulse: %d", MSG_ReadByte (&packet));
Net_LogPrintf (" Impulse: %d", MSG_ReadByte
(&packet));
Net_LogPrintf (" Msec: %d", MSG_ReadByte (&packet));
}
break;
@ -955,7 +972,8 @@ Parse_Client_Packet (void)
break;
case clc_upload:
ii = MSG_ReadShort (&packet);
Net_LogPrintf ("%d bytes at %d", ii, MSG_ReadByte (&packet));
Net_LogPrintf ("%d bytes at %d", ii, MSG_ReadByte
(&packet));
for (i = 0; i < ii; i++)
MSG_ReadByte (&packet);
break;
@ -965,7 +983,6 @@ Parse_Client_Packet (void)
}
Net_LogPrintf ("\n");
}
}
}
@ -1011,9 +1028,8 @@ Net_Log_Init (const char **sound_precache)
// 3 = just parse
// 4 = parse/hexdump, skip movement/empty messages
net_loglevel =
Cvar_Get ("net_loglevel", "2", CVAR_NONE, NULL,
"Packet logging/parsing");
net_loglevel = Cvar_Get ("net_loglevel", "2", CVAR_NONE, NULL,
"Packet logging/parsing");
Cmd_AddCommand ("net_packetlog_zap", Net_PacketLog_Zap_f,
"clear the packet log file");

View file

@ -30,18 +30,9 @@
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <sys/types.h>
#ifdef HAVE_SYS_PARAM_H
# include <sys/param.h>
#endif
@ -63,11 +54,16 @@
#ifdef HAVE_SYS_FILIO_H
# include <sys/filio.h>
#endif
#ifdef NeXT
# include <libc.h>
#endif
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include "QF/console.h"
#include "QF/cvar.h"
#include "QF/msg.h"
@ -95,19 +91,14 @@
# endif
#endif
extern cvar_t *net_packetlog;
netadr_t net_local_adr;
netadr_t net_from;
int net_socket;
netadr_t net_local_adr;
netadr_t net_from;
static sizebuf_t _net_message_message;
static msg_t _net_message = {0, 0, &_net_message_message};
msg_t *net_message = &_net_message;
extern qboolean is_server;
#define MAX_UDP_PACKET (MAX_MSGLEN*2)
byte net_message_buffer[MAX_UDP_PACKET];
@ -115,7 +106,9 @@ byte net_message_buffer[MAX_UDP_PACKET];
WSADATA winsockdata;
#endif
//=============================================================================
extern cvar_t *net_packetlog;
extern qboolean is_server;
void
NetadrToSockadr (netadr_t *a, struct sockaddr_in *s)
@ -143,7 +136,6 @@ NET_CompareBaseAdr (netadr_t a, netadr_t b)
return false;
}
qboolean
NET_CompareAdr (netadr_t a, netadr_t b)
{
@ -185,11 +177,10 @@ NET_BaseAdrToString (netadr_t a)
qboolean
NET_StringToAdr (const char *s, netadr_t *a)
{
char copy[128];
char *colon;
struct hostent *h;
struct sockaddr_in sadr;
char *colon;
char copy[128];
memset (&sadr, 0, sizeof (sadr));
sadr.sin_family = AF_INET;
@ -223,8 +214,8 @@ qboolean
NET_IsClientLegal (netadr_t *adr)
{
#if 0
struct sockaddr_in sadr;
int newsocket;
struct sockaddr_in sadr;
if (adr->ip[0] == 127)
return false; // no local connections period
@ -248,15 +239,12 @@ NET_IsClientLegal (netadr_t *adr)
#endif
}
//=============================================================================
qboolean
NET_GetPacket (void)
{
int ret;
struct sockaddr_in from;
socklen_t fromlen;
struct sockaddr_in from;
fromlen = sizeof (from);
ret =
@ -292,15 +280,15 @@ NET_GetPacket (void)
return false;
}
// Check for malformed packets
// Check for malformed packets
if (is_server && ntohs(net_from.port)<1024) {
Con_Printf ("Warning: Packet from %s dropped: Bad port\n",
NET_AdrToString (net_from));
return false;
}
if (from.sin_addr.s_addr==INADDR_ANY || from.sin_addr.s_addr==INADDR_BROADCAST) {
if (from.sin_addr.s_addr==INADDR_ANY || from.sin_addr.s_addr ==
INADDR_BROADCAST) {
Con_Printf ("Warning: Packet dropped - bad address\n");
return false;
}
@ -316,8 +304,6 @@ NET_GetPacket (void)
return ret;
}
//=============================================================================
void
NET_SendPacket (int length, void *data, netadr_t to)
{
@ -355,12 +341,10 @@ NET_SendPacket (int length, void *data, netadr_t to)
}
}
//=============================================================================
int
UDP_OpenSocket (int port)
{
int newsocket;
int newsocket, i;
struct sockaddr_in address;
#ifdef _WIN32
@ -369,7 +353,6 @@ UDP_OpenSocket (int port)
#else
int _true = 1;
#endif
int i;
memset (&address, 0, sizeof(address));
@ -378,7 +361,7 @@ UDP_OpenSocket (int port)
if (ioctl (newsocket, FIONBIO, &_true) == -1)
Sys_Error ("UDP_OpenSocket: ioctl FIONBIO:%s", strerror (errno));
address.sin_family = AF_INET;
//ZOID -- check for interface binding option
// ZOID -- check for interface binding option
if ((i = COM_CheckParm ("-ip")) != 0 && i < com_argc) {
address.sin_addr.s_addr = inet_addr (com_argv[i + 1]);
Con_Printf ("Binding to IP Interface Address of %s\n",
@ -399,8 +382,8 @@ void
NET_GetLocalAddress (void)
{
char buff[MAXHOSTNAMELEN];
struct sockaddr_in address;
socklen_t namelen;
struct sockaddr_in address;
gethostname (buff, MAXHOSTNAMELEN);
buff[MAXHOSTNAMELEN - 1] = 0;
@ -415,15 +398,12 @@ NET_GetLocalAddress (void)
Con_Printf ("IP address %s\n", NET_AdrToString (net_local_adr));
}
/*
NET_Init
*/
void
NET_Init (int port)
{
#ifdef _WIN32
WORD wVersionRequested;
int r;
WORD wVersionRequested;
wVersionRequested = MAKEWORD (1, 1);
@ -431,28 +411,19 @@ NET_Init (int port)
if (r)
Sys_Error ("Winsock initialization failed.");
#endif /* _WIN32 */
//
// open the single socket to be used for all communications
//
net_socket = UDP_OpenSocket (port);
//
// init the message buffer
//
_net_message_message.maxsize = sizeof (net_message_buffer);
_net_message_message.data = net_message_buffer;
//
// determine my name & address
//
NET_GetLocalAddress ();
Con_Printf ("UDP Initialized\n");
}
/*
NET_Shutdown
*/
void
NET_Shutdown (void)
{

View file

@ -29,17 +29,47 @@
$Id$
*/
/* Sun's model_t in sys/model.h conflicts w/ Quake's model_t */
#define model_t quakeforgemodel_t
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#ifdef HAVE_STRING_H
# include <string.h>
#endif
#ifdef HAVE_STRINGS_H
# include <strings.h>
#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#ifdef HAVE_SYS_IOCTL_H
# include <sys/ioctl.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
# include <netinet/in.h>
#endif
#ifdef HAVE_NETDB_H
# include <netdb.h>
#endif
#ifdef HAVE_ARPA_INET_H
# include <arpa/inet.h>
#endif
#ifdef HAVE_SYS_FILIO_H
# include <sys/filio.h>
#endif
#ifdef NeXT
# include <libc.h>
#endif
#ifdef _WIN32
# include <windows.h>
# undef EWOULDBLOCK
# define EWOULDBLOCK WSAEWOULDBLOCK
#endif
#ifdef _WIN32
# ifdef HAVE_IPV6
# include <winsock2.h>
# define _DEF_BYTE_
@ -65,47 +95,10 @@
#include <stdio.h>
#include <errno.h>
/* Sun's model_t in sys/model.h conflicts w/ Quake's model_t */
#define model_t quakeforgemodel_t
#ifndef _WIN32
# include <unistd.h>
#endif
#include <sys/types.h>
#ifdef HAVE_STRING_H
# include <string.h>
#endif
#ifdef HAVE_STRINGS_H
# include <strings.h>
#endif
#ifdef HAVE_SYS_IOCTL_H
# include <sys/ioctl.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h>
#endif
#ifdef HAVE_NETINET_IN_H
# include <netinet/in.h>
#endif
#ifdef HAVE_NETDB_H
# include <netdb.h>
#endif
#ifdef HAVE_ARPA_INET_H
# include <arpa/inet.h>
#endif
#ifdef HAVE_SYS_FILIO_H
# include <sys/filio.h>
#endif
#undef model_t
#ifdef NeXT
# include <libc.h>
#endif
#include "QF/console.h"
#include "QF/msg.h"
#include "QF/qargs.h"
@ -125,9 +118,8 @@
# endif
#endif
netadr_t net_local_adr;
netadr_t net_from;
netadr_t net_local_adr;
int net_socket;
static sizebuf_t _net_message_message;
@ -141,7 +133,6 @@ byte net_message_buffer[MAX_UDP_PACKET];
WSADATA winsockdata;
#endif
//=============================================================================
void
NetadrToSockadr (netadr_t *a, struct sockaddr_in6 *s)
@ -185,7 +176,6 @@ NET_CompareBaseAdr (netadr_t a, netadr_t b)
return false;
}
qboolean
NET_CompareAdr (netadr_t a, netadr_t b)
{
@ -256,14 +246,12 @@ NET_BaseAdrToString (netadr_t a)
qboolean
NET_StringToAdr (const char *s, netadr_t *a)
{
char copy[128];
char *addrs, *space;
char *ports = NULL;
int err;
struct addrinfo hints;
struct addrinfo *resultp;
char *space;
char *ports = NULL;
char copy[128];
char *addrs;
int err;
struct sockaddr_storage ss;
struct sockaddr_in6 *ss6;
struct sockaddr_in *ss4;
@ -291,11 +279,12 @@ NET_StringToAdr (const char *s, netadr_t *a)
}
}
// Con_Printf ("NET_StringToAdr: addrs %s ports %s\n",addrs, ports);
// Con_Printf ("NET_StringToAdr: addrs %s ports %s\n",addrs, ports);
if ((err = getaddrinfo (addrs, ports, &hints, &resultp))) {
// Error
Con_Printf ("NET_StringToAdr: string %s:\n%s\n", s, gai_strerror (err));
Con_Printf ("NET_StringToAdr: string %s:\n%s\n", s, gai_strerror
(err));
return 0;
}
@ -335,8 +324,8 @@ qboolean
NET_IsClientLegal (netadr_t *adr)
{
#if 0
struct sockaddr_in sadr;
int newsocket;
struct sockaddr_in sadr;
if (adr->ip[0] == 127)
return false; // no local connections period
@ -360,15 +349,12 @@ NET_IsClientLegal (netadr_t *adr)
#endif
}
//=============================================================================
qboolean
NET_GetPacket (void)
{
int ret;
struct sockaddr_in6 from;
int ret;
unsigned int fromlen;
struct sockaddr_in6 from;
fromlen = sizeof (from);
ret =
@ -407,8 +393,6 @@ NET_GetPacket (void)
return ret;
}
//=============================================================================
void
NET_SendPacket (int length, void *data, netadr_t to)
{
@ -441,16 +425,13 @@ NET_SendPacket (int length, void *data, netadr_t to)
}
}
//=============================================================================
int
UDP_OpenSocket (int port)
{
int newsocket;
char Buf[BUFSIZ], *Host, *Service;
int newsocket, Error;
struct sockaddr_in6 address;
struct addrinfo hints, *res;
int Error;
char Buf[BUFSIZ], *Host, *Service;
#ifdef IPV6_BINDV6ONLY
int dummy;
@ -469,7 +450,7 @@ UDP_OpenSocket (int port)
Sys_Error ("UDP_OpenSocket: ioctl FIONBIO: %s", strerror (errno));
memset (&address, 0, sizeof (address));
address.sin6_family = AF_INET6;
//ZOID -- check for interface binding option
// ZOID -- check for interface binding option
memset (&hints, 0, sizeof (hints));
hints.ai_family = PF_UNSPEC;
@ -525,8 +506,8 @@ void
NET_GetLocalAddress (void)
{
char buff[MAXHOSTNAMELEN];
struct sockaddr_in6 address;
unsigned int namelen;
struct sockaddr_in6 address;
if (gethostname (buff, MAXHOSTNAMELEN) == -1)
Sys_Error ("Net_GetLocalAddress: gethostname: %s", strerror (errno));
@ -542,15 +523,12 @@ NET_GetLocalAddress (void)
Con_Printf ("IP address %s\n", NET_AdrToString (net_local_adr));
}
/*
NET_Init
*/
void
NET_Init (int port)
{
#ifdef _WIN32
WORD wVersionRequested;
int r;
WORD wVersionRequested;
wVersionRequested = MAKEWORD (1, 1);
@ -559,28 +537,19 @@ NET_Init (int port)
Sys_Error ("Winsock initialization failed.");
#endif /* _WIN32 */
//
// open the single socket to be used for all communications
//
net_socket = UDP_OpenSocket (port);
//
// init the message buffer
//
_net_message_message.maxsize = sizeof (net_message_buffer);
_net_message_message.data = net_message_buffer;
//
// determine my name & address
//
NET_GetLocalAddress ();
Con_Printf ("UDP Initialized\n");
}
/*
NET_Shutdown
*/
void
NET_Shutdown (void)
{

View file

@ -51,7 +51,6 @@ int watertype;
float frametime;
vec3_t forward, right, up;
vec3_t player_mins = { -16, -16, -24 };
vec3_t player_maxs = { 16, 16, 32 };
@ -115,12 +114,11 @@ PM_ClipVelocity (vec3_t in, vec3_t normal, vec3_t out, float overbounce)
int
PM_FlyMove (void)
{
int blocked, bumpcount, numbumps, numplanes, i, j;
vec3_t dir;
float time_left, d;
int blocked, bumpcount, numbumps, numplanes, i, j;
pmtrace_t trace;
vec3_t dir, end, primal_velocity, original_velocity;
vec3_t planes[MAX_CLIP_PLANES];
vec3_t end, primal_velocity, original_velocity;
numbumps = 4;
@ -343,8 +341,8 @@ PM_GroundMove (void)
void
PM_Friction (void)
{
float *vel;
float drop, friction, speed, newspeed;
float *vel;
pmtrace_t trace;
vec3_t start, stop;
@ -494,9 +492,9 @@ PM_WaterMove (void)
void
PM_AirMove (void)
{
float fmove, smove, wishspeed;
int i;
vec3_t original, wishdir, wishvel;
float fmove, smove, wishspeed;
fmove = pmove.cmd.forwardmove;
smove = pmove.cmd.sidemove;
@ -562,8 +560,7 @@ PM_CategorizePosition (void)
pmtrace_t tr;
vec3_t point;
// if the player hull point one unit down is solid, the player
// is on ground
// if the player hull point one unit down is solid, the player is on ground
// see if standing on something solid
point[0] = pmove.origin[0];
@ -615,8 +612,7 @@ void
JumpButton (void)
{
if (pmove.dead) {
pmove.oldbuttons |= BUTTON_JUMP; // don't jump again until
// released
pmove.oldbuttons |= BUTTON_JUMP; // don't jump again until released
return;
}
@ -736,8 +732,7 @@ SpectatorMove (void)
float control, drop, friction, fmove, smove, speed, newspeed;
float currentspeed, addspeed, accelspeed, wishspeed;
int i;
vec3_t wishvel;
vec3_t wishdir;
vec3_t wishdir, wishvel;
// friction
speed = Length (pmove.velocity);