summaryrefslogtreecommitdiff
path: root/src/cl_parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cl_parse.c')
-rw-r--r--src/cl_parse.c816
1 files changed, 418 insertions, 398 deletions
diff --git a/src/cl_parse.c b/src/cl_parse.c
index f26a69f..6902e31 100644
--- a/src/cl_parse.c
+++ b/src/cl_parse.c
@@ -8,7 +8,7 @@ of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
@@ -29,15 +29,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
=====================================================================
*/
-static inline void CL_ParseDeltaEntity( server_frame_t *frame,
- int newnum,
- entity_state_t *old,
- int bits )
+static inline void CL_ParseDeltaEntity(server_frame_t *frame,
+ int newnum,
+ entity_state_t *old,
+ int bits)
{
entity_state_t *state;
- if( frame->numEntities >= MAX_PACKET_ENTITIES ) {
- Com_Error( ERR_DROP, "%s: MAX_PACKET_ENTITIES exceeded", __func__ );
+ if (frame->numEntities >= MAX_PACKET_ENTITIES) {
+ Com_Error(ERR_DROP, "%s: MAX_PACKET_ENTITIES exceeded", __func__);
}
state = &cl.entityStates[cl.numEntityStates & PARSE_ENTITIES_MASK];
@@ -45,21 +45,21 @@ static inline void CL_ParseDeltaEntity( server_frame_t *frame,
frame->numEntities++;
#ifdef _DEBUG
- if( cl_shownet->integer > 2 && bits ) {
- MSG_ShowDeltaEntityBits( bits );
- Com_LPrintf( PRINT_DEVELOPER, "\n" );
+ if (cl_shownet->integer > 2 && bits) {
+ MSG_ShowDeltaEntityBits(bits);
+ Com_LPrintf(PRINT_DEVELOPER, "\n");
}
#endif
- MSG_ParseDeltaEntity( old, state, newnum, bits, cl.esFlags );
+ MSG_ParseDeltaEntity(old, state, newnum, bits, cl.esFlags);
// shuffle previous origin to old
- if( !(bits & U_OLDORIGIN) && !(state->renderfx & RF_BEAM) )
- VectorCopy( old->origin, state->old_origin );
+ if (!(bits & U_OLDORIGIN) && !(state->renderfx & RF_BEAM))
+ VectorCopy(old->origin, state->old_origin);
}
-static void CL_ParsePacketEntities( server_frame_t *oldframe,
- server_frame_t *frame )
+static void CL_ParsePacketEntities(server_frame_t *oldframe,
+ server_frame_t *frame)
{
int newnum;
int bits;
@@ -73,10 +73,10 @@ static void CL_ParsePacketEntities( server_frame_t *oldframe,
// delta from the entities present in oldframe
oldindex = 0;
oldstate = NULL;
- if( !oldframe ) {
+ if (!oldframe) {
oldnum = 99999;
} else {
- if( oldindex >= oldframe->numEntities ) {
+ if (oldindex >= oldframe->numEntities) {
oldnum = 99999;
} else {
i = oldframe->firstEntity + oldindex;
@@ -85,28 +85,28 @@ static void CL_ParsePacketEntities( server_frame_t *oldframe,
}
}
- while( 1 ) {
- newnum = MSG_ParseEntityBits( &bits );
- if( newnum < 0 || newnum >= MAX_EDICTS ) {
- Com_Error( ERR_DROP, "%s: bad number: %d", __func__, newnum );
+ while (1) {
+ newnum = MSG_ParseEntityBits(&bits);
+ if (newnum < 0 || newnum >= MAX_EDICTS) {
+ Com_Error(ERR_DROP, "%s: bad number: %d", __func__, newnum);
}
- if( msg_read.readcount > msg_read.cursize ) {
- Com_Error( ERR_DROP, "%s: read past end of message", __func__ );
+ if (msg_read.readcount > msg_read.cursize) {
+ Com_Error(ERR_DROP, "%s: read past end of message", __func__);
}
- if( !newnum ) {
+ if (!newnum) {
break;
}
- while( oldnum < newnum ) {
+ while (oldnum < newnum) {
// one or more entities from the old packet are unchanged
- SHOWNET( 3, " unchanged: %i\n", oldnum );
- CL_ParseDeltaEntity( frame, oldnum, oldstate, 0 );
-
+ SHOWNET(3, " unchanged: %i\n", oldnum);
+ CL_ParseDeltaEntity(frame, oldnum, oldstate, 0);
+
oldindex++;
- if( oldindex >= oldframe->numEntities ) {
+ if (oldindex >= oldframe->numEntities) {
oldnum = 99999;
} else {
i = oldframe->firstEntity + oldindex;
@@ -115,19 +115,19 @@ static void CL_ParsePacketEntities( server_frame_t *oldframe,
}
}
- if( bits & U_REMOVE ) {
+ if (bits & U_REMOVE) {
// the entity present in oldframe is not in the current frame
- SHOWNET( 2, " remove: %i\n", newnum );
- if( oldnum != newnum ) {
- Com_DPrintf( "U_REMOVE: oldnum != newnum\n" );
+ SHOWNET(2, " remove: %i\n", newnum);
+ if (oldnum != newnum) {
+ Com_DPrintf("U_REMOVE: oldnum != newnum\n");
}
- if( !oldframe ) {
- Com_Error( ERR_DROP, "U_REMOVE: NULL oldframe" );
+ if (!oldframe) {
+ Com_Error(ERR_DROP, "U_REMOVE: NULL oldframe");
}
oldindex++;
- if( oldindex >= oldframe->numEntities ) {
+ if (oldindex >= oldframe->numEntities) {
oldnum = 99999;
} else {
i = oldframe->firstEntity + oldindex;
@@ -137,17 +137,17 @@ static void CL_ParsePacketEntities( server_frame_t *oldframe,
continue;
}
- if( oldnum == newnum ) {
+ if (oldnum == newnum) {
// delta from previous state
- SHOWNET( 2, " delta: %i ", newnum );
- CL_ParseDeltaEntity( frame, newnum, oldstate, bits );
- if( !bits ) {
- SHOWNET( 2, "\n" );
+ SHOWNET(2, " delta: %i ", newnum);
+ CL_ParseDeltaEntity(frame, newnum, oldstate, bits);
+ if (!bits) {
+ SHOWNET(2, "\n");
}
oldindex++;
- if( oldindex >= oldframe->numEntities ) {
+ if (oldindex >= oldframe->numEntities) {
oldnum = 99999;
} else {
i = oldframe->firstEntity + oldindex;
@@ -157,12 +157,12 @@ static void CL_ParsePacketEntities( server_frame_t *oldframe,
continue;
}
- if( oldnum > newnum ) {
+ if (oldnum > newnum) {
// delta from baseline
- SHOWNET( 2, " baseline: %i ", newnum );
- CL_ParseDeltaEntity( frame, newnum, &cl.baselines[newnum], bits );
- if( !bits ) {
- SHOWNET( 2, "\n" );
+ SHOWNET(2, " baseline: %i ", newnum);
+ CL_ParseDeltaEntity(frame, newnum, &cl.baselines[newnum], bits);
+ if (!bits) {
+ SHOWNET(2, "\n");
}
continue;
}
@@ -170,14 +170,14 @@ static void CL_ParsePacketEntities( server_frame_t *oldframe,
}
// any remaining entities in the old frame are copied over
- while( oldnum != 99999 ) {
+ while (oldnum != 99999) {
// one or more entities from the old packet are unchanged
- SHOWNET( 3, " unchanged: %i\n", oldnum );
- CL_ParseDeltaEntity( frame, oldnum, oldstate, 0 );
-
+ SHOWNET(3, " unchanged: %i\n", oldnum);
+ CL_ParseDeltaEntity(frame, oldnum, oldstate, 0);
+
oldindex++;
- if( oldindex >= oldframe->numEntities ) {
+ if (oldindex >= oldframe->numEntities) {
oldnum = 99999;
} else {
i = oldframe->firstEntity + oldindex;
@@ -187,27 +187,28 @@ static void CL_ParsePacketEntities( server_frame_t *oldframe,
}
}
-static void CL_ParseFrame( int extrabits ) {
+static void CL_ParseFrame(int extrabits)
+{
uint32_t bits, extraflags;
int currentframe, deltaframe,
delta, surpressed;
server_frame_t frame, *oldframe;
player_state_t *from;
int length;
-
- memset( &frame, 0, sizeof( frame ) );
+
+ memset(&frame, 0, sizeof(frame));
cl.frameflags = 0;
surpressed = 0;
extraflags = 0;
- if( cls.serverProtocol > PROTOCOL_VERSION_DEFAULT ) {
+ if (cls.serverProtocol > PROTOCOL_VERSION_DEFAULT) {
bits = MSG_ReadLong();
currentframe = bits & FRAMENUM_MASK;
delta = bits >> FRAMENUM_BITS;
- if( delta == 31 ) {
+ if (delta == 31) {
deltaframe = -1;
} else {
deltaframe = currentframe - delta;
@@ -216,24 +217,24 @@ static void CL_ParseFrame( int extrabits ) {
bits = MSG_ReadByte();
surpressed = bits & SURPRESSCOUNT_MASK;
- if( cls.serverProtocol == PROTOCOL_VERSION_Q2PRO ) {
- if( surpressed & FF_CLIENTPRED ) {
+ if (cls.serverProtocol == PROTOCOL_VERSION_Q2PRO) {
+ if (surpressed & FF_CLIENTPRED) {
// CLIENTDROP is implied, don't draw both
surpressed &= ~FF_CLIENTDROP;
}
cl.frameflags |= surpressed;
- } else if( surpressed ) {
+ } else if (surpressed) {
cl.frameflags |= FF_SURPRESSED;
}
- extraflags = ( extrabits << 4 ) | ( bits >> SURPRESSCOUNT_BITS );
+ extraflags = (extrabits << 4) | (bits >> SURPRESSCOUNT_BITS);
} else {
currentframe = MSG_ReadLong();
deltaframe = MSG_ReadLong();
// BIG HACK to let old demos continue to work
- if( cls.serverProtocol != PROTOCOL_VERSION_OLD ) {
+ if (cls.serverProtocol != PROTOCOL_VERSION_OLD) {
surpressed = MSG_ReadByte();
- if( surpressed ) {
+ if (surpressed) {
cl.frameflags |= FF_SURPRESSED;
}
}
@@ -242,39 +243,38 @@ static void CL_ParseFrame( int extrabits ) {
frame.number = currentframe;
frame.delta = deltaframe;
- if( cls.netchan && cls.netchan->dropped ) {
+ if (cls.netchan && cls.netchan->dropped) {
cl.frameflags |= FF_SERVERDROP;
}
// if the frame is delta compressed from data that we no longer have
// available, we must suck up the rest of the frame, but not use it, then
// ask for a non-compressed message
- if( deltaframe > 0 ) {
+ if (deltaframe > 0) {
oldframe = &cl.frames[deltaframe & UPDATE_MASK];
from = &oldframe->ps;
- if( deltaframe == currentframe ) {
+ if (deltaframe == currentframe) {
// old servers may cause this on map change
- Com_DPrintf( "%s: delta from current frame\n", __func__ );
+ Com_DPrintf("%s: delta from current frame\n", __func__);
cl.frameflags |= FF_BADFRAME;
- } else if( oldframe->number != deltaframe ) {
+ } else if (oldframe->number != deltaframe) {
// the frame that the server did the delta from
// is too old, so we can't reconstruct it properly.
- Com_DPrintf( "%s: delta frame was never received or too old\n", __func__ );
+ Com_DPrintf("%s: delta frame was never received or too old\n", __func__);
cl.frameflags |= FF_OLDFRAME;
- } else if( !oldframe->valid ) {
+ } else if (!oldframe->valid) {
// should never happen
- Com_DPrintf( "%s: delta from invalid frame\n", __func__ );
+ Com_DPrintf("%s: delta from invalid frame\n", __func__);
cl.frameflags |= FF_BADFRAME;
- } else if( cl.numEntityStates - oldframe->firstEntity >
- MAX_PARSE_ENTITIES - MAX_PACKET_ENTITIES )
- {
- Com_DPrintf( "%s: delta entities too old\n", __func__ );
+ } else if (cl.numEntityStates - oldframe->firstEntity >
+ MAX_PARSE_ENTITIES - MAX_PACKET_ENTITIES) {
+ Com_DPrintf("%s: delta entities too old\n", __func__);
cl.frameflags |= FF_OLDENT;
} else {
frame.valid = qtrue; // valid delta parse
}
- if( !frame.valid && cl.frame.valid && cls.demo.playback ) {
- Com_DPrintf( "%s: recovering broken demo\n", __func__ );
+ if (!frame.valid && cl.frame.valid && cls.demo.playback) {
+ Com_DPrintf("%s: recovering broken demo\n", __func__);
oldframe = &cl.frame;
from = &oldframe->ps;
frame.valid = qtrue;
@@ -288,86 +288,86 @@ static void CL_ParseFrame( int extrabits ) {
// read areabits
length = MSG_ReadByte();
- if( length ) {
- if( length < 0 || msg_read.readcount + length > msg_read.cursize ) {
- Com_Error( ERR_DROP, "%s: read past end of message", __func__ );
+ if (length) {
+ if (length < 0 || msg_read.readcount + length > msg_read.cursize) {
+ Com_Error(ERR_DROP, "%s: read past end of message", __func__);
}
- if( length > sizeof( frame.areabits ) ) {
- Com_Error( ERR_DROP, "%s: invalid areabits length", __func__ );
+ if (length > sizeof(frame.areabits)) {
+ Com_Error(ERR_DROP, "%s: invalid areabits length", __func__);
}
- memcpy( frame.areabits, msg_read.data + msg_read.readcount, length );
+ memcpy(frame.areabits, msg_read.data + msg_read.readcount, length);
msg_read.readcount += length;
frame.areabytes = length;
} else {
frame.areabytes = 0;
}
- if( cls.serverProtocol <= PROTOCOL_VERSION_DEFAULT ) {
- if( MSG_ReadByte() != svc_playerinfo ) {
- Com_Error( ERR_DROP, "%s: not playerinfo", __func__ );
+ if (cls.serverProtocol <= PROTOCOL_VERSION_DEFAULT) {
+ if (MSG_ReadByte() != svc_playerinfo) {
+ Com_Error(ERR_DROP, "%s: not playerinfo", __func__);
}
}
- SHOWNET( 2, "%3"PRIz":playerinfo\n", msg_read.readcount - 1 );
+ SHOWNET(2, "%3"PRIz":playerinfo\n", msg_read.readcount - 1);
// parse playerstate
bits = MSG_ReadShort();
- if( cls.serverProtocol > PROTOCOL_VERSION_DEFAULT ) {
- MSG_ParseDeltaPlayerstate_Enhanced( from, &frame.ps, bits, extraflags );
+ if (cls.serverProtocol > PROTOCOL_VERSION_DEFAULT) {
+ MSG_ParseDeltaPlayerstate_Enhanced(from, &frame.ps, bits, extraflags);
#ifdef _DEBUG
- if( cl_shownet->integer > 2 ) {
- MSG_ShowDeltaPlayerstateBits_Enhanced( bits );
- Com_LPrintf( PRINT_DEVELOPER, "\n" );
+ if (cl_shownet->integer > 2) {
+ MSG_ShowDeltaPlayerstateBits_Enhanced(bits);
+ Com_LPrintf(PRINT_DEVELOPER, "\n");
}
#endif
- if( cls.serverProtocol == PROTOCOL_VERSION_Q2PRO ) {
+ if (cls.serverProtocol == PROTOCOL_VERSION_Q2PRO) {
// parse clientNum
- if( extraflags & EPS_CLIENTNUM ) {
+ if (extraflags & EPS_CLIENTNUM) {
frame.clientNum = MSG_ReadByte();
- } else if( oldframe ) {
+ } else if (oldframe) {
frame.clientNum = oldframe->clientNum;
}
} else {
frame.clientNum = cl.clientNum;
}
} else {
- MSG_ParseDeltaPlayerstate_Default( from, &frame.ps, bits );
+ MSG_ParseDeltaPlayerstate_Default(from, &frame.ps, bits);
#ifdef _DEBUG
- if( cl_shownet->integer > 2 ) {
- MSG_ShowDeltaPlayerstateBits_Default( bits );
- Com_LPrintf( PRINT_DEVELOPER, "\n" );
+ if (cl_shownet->integer > 2) {
+ MSG_ShowDeltaPlayerstateBits_Default(bits);
+ Com_LPrintf(PRINT_DEVELOPER, "\n");
}
#endif
frame.clientNum = cl.clientNum;
}
// parse packetentities
- if( cls.serverProtocol <= PROTOCOL_VERSION_DEFAULT ) {
- if( MSG_ReadByte() != svc_packetentities ) {
- Com_Error( ERR_DROP, "%s: not packetentities", __func__ );
+ if (cls.serverProtocol <= PROTOCOL_VERSION_DEFAULT) {
+ if (MSG_ReadByte() != svc_packetentities) {
+ Com_Error(ERR_DROP, "%s: not packetentities", __func__);
}
}
- SHOWNET( 2, "%3"PRIz":packetentities\n", msg_read.readcount - 1 );
+ SHOWNET(2, "%3"PRIz":packetentities\n", msg_read.readcount - 1);
- CL_ParsePacketEntities( oldframe, &frame );
+ CL_ParsePacketEntities(oldframe, &frame);
// save the frame off in the backup array for later delta comparisons
cl.frames[currentframe & UPDATE_MASK] = frame;
#ifdef _DEBUG
- if( cl_shownet->integer > 2 ) {
+ if (cl_shownet->integer > 2) {
int rtt = 0;
- if( cls.netchan ) {
+ if (cls.netchan) {
int seq = cls.netchan->incoming_acknowledged & CMD_MASK;
rtt = cls.realtime - cl.history[seq].sent;
}
- Com_LPrintf( PRINT_DEVELOPER, "%3"PRIz":frame:%d delta:%d rtt:%d\n",
- msg_read.readcount - 1, frame.number, frame.delta, rtt );
+ Com_LPrintf(PRINT_DEVELOPER, "%3"PRIz":frame:%d delta:%d rtt:%d\n",
+ msg_read.readcount - 1, frame.number, frame.delta, rtt);
}
#endif
- if( !frame.valid ) {
+ if (!frame.valid) {
cl.frame.valid = qfalse;
#if USE_FPS
cl.keyframe.valid = qfalse;
@@ -375,19 +375,19 @@ static void CL_ParseFrame( int extrabits ) {
return; // do not change anything
}
- if( !frame.ps.fov ) {
+ if (!frame.ps.fov) {
// fail out early to prevent spurious errors later
- Com_Error( ERR_DROP, "%s: bad fov", __func__ );
+ Com_Error(ERR_DROP, "%s: bad fov", __func__);
}
- if( cls.state < ca_precached )
+ if (cls.state < ca_precached)
return;
cl.oldframe = cl.frame;
cl.frame = frame;
#if USE_FPS
- if( CL_FRAMESYNC ) {
+ if (CL_FRAMESYNC) {
cl.oldkeyframe = cl.keyframe;
cl.keyframe = cl.frame;
}
@@ -395,7 +395,7 @@ static void CL_ParseFrame( int extrabits ) {
cls.demo.frames_read++;
- if( !cls.demo.seeking )
+ if (!cls.demo.seeking)
CL_DeltaFrame();
}
@@ -407,82 +407,86 @@ static void CL_ParseFrame( int extrabits ) {
=====================================================================
*/
-static void CL_ParseConfigstring( int index ) {
+static void CL_ParseConfigstring(int index)
+{
size_t len, maxlen;
char *s;
- if( index < 0 || index >= MAX_CONFIGSTRINGS ) {
- Com_Error( ERR_DROP, "%s: bad index: %d", __func__, index );
+ if (index < 0 || index >= MAX_CONFIGSTRINGS) {
+ Com_Error(ERR_DROP, "%s: bad index: %d", __func__, index);
}
s = cl.configstrings[index];
- maxlen = CS_SIZE( index );
- len = MSG_ReadString( s, maxlen );
+ maxlen = CS_SIZE(index);
+ len = MSG_ReadString(s, maxlen);
- SHOWNET( 2, " %d \"%s\"\n", index, s );
+ SHOWNET(2, " %d \"%s\"\n", index, s);
- if( len >= maxlen ) {
+ if (len >= maxlen) {
Com_WPrintf(
"%s: index %d overflowed: %"PRIz" > %"PRIz"\n",
- __func__, index, len, maxlen - 1 );
- len = maxlen - 1;
+ __func__, index, len, maxlen - 1);
+ len = maxlen - 1;
}
- if( cls.demo.seeking ) {
- Q_SetBit( cl.dcs, index );
+ if (cls.demo.seeking) {
+ Q_SetBit(cl.dcs, index);
return;
}
- if( cls.demo.recording && cls.demo.paused ) {
- Q_SetBit( cl.dcs, index );
+ if (cls.demo.recording && cls.demo.paused) {
+ Q_SetBit(cl.dcs, index);
}
- // do something apropriate
- CL_UpdateConfigstring( index );
+ // do something apropriate
+ CL_UpdateConfigstring(index);
}
-static void CL_ParseBaseline( int index, int bits ) {
- if( index < 1 || index >= MAX_EDICTS ) {
- Com_Error( ERR_DROP, "%s: bad index: %d", __func__, index );
+static void CL_ParseBaseline(int index, int bits)
+{
+ if (index < 1 || index >= MAX_EDICTS) {
+ Com_Error(ERR_DROP, "%s: bad index: %d", __func__, index);
}
#ifdef _DEBUG
- if( cl_shownet->integer > 2 ) {
- MSG_ShowDeltaEntityBits( bits );
- Com_LPrintf( PRINT_DEVELOPER, "\n" );
+ if (cl_shownet->integer > 2) {
+ MSG_ShowDeltaEntityBits(bits);
+ Com_LPrintf(PRINT_DEVELOPER, "\n");
}
#endif
- MSG_ParseDeltaEntity( NULL, &cl.baselines[index], index, bits, cl.esFlags );
+ MSG_ParseDeltaEntity(NULL, &cl.baselines[index], index, bits, cl.esFlags);
}
// instead of wasting space for svc_configstring and svc_spawnbaseline
// bytes, entire game state is compressed into a single stream.
-static void CL_ParseGamestate( void ) {
+static void CL_ParseGamestate(void)
+{
int index, bits;
- while( msg_read.readcount < msg_read.cursize ) {
+ while (msg_read.readcount < msg_read.cursize) {
index = MSG_ReadShort();
- if( index == MAX_CONFIGSTRINGS ) {
+ if (index == MAX_CONFIGSTRINGS) {
break;
}
- CL_ParseConfigstring( index );
+ CL_ParseConfigstring(index);
}
- while( msg_read.readcount < msg_read.cursize ) {
- index = MSG_ParseEntityBits( &bits );
- if( !index ) {
+ while (msg_read.readcount < msg_read.cursize) {
+ index = MSG_ParseEntityBits(&bits);
+ if (!index) {
break;
}
- CL_ParseBaseline( index, bits );
+ CL_ParseBaseline(index, bits);
}
}
-static void CL_ParseServerData( void ) {
+static void CL_ParseServerData(void)
+{
char levelname[MAX_QPATH];
int i, protocol, attractloop;
size_t len;
- Cbuf_Execute( &cl_cmdbuf ); // make sure any stuffed commands are done
-
+ Cbuf_Execute(&cl_cmdbuf); // make sure any stuffed commands are done
+
// wipe the client_state_t struct
CL_ClearState();
@@ -491,37 +495,37 @@ static void CL_ParseServerData( void ) {
cl.servercount = MSG_ReadLong();
attractloop = MSG_ReadByte();
- Com_DPrintf( "Serverdata packet received "
- "(protocol=%d, servercount=%d, attractloop=%d)\n",
- protocol, cl.servercount, attractloop );
+ Com_DPrintf("Serverdata packet received "
+ "(protocol=%d, servercount=%d, attractloop=%d)\n",
+ protocol, cl.servercount, attractloop);
// check protocol
- if( cls.serverProtocol != protocol ) {
- if( !cls.demo.playback ) {
- Com_Error( ERR_DROP, "Requested protocol version %d, but server returned %d.",
- cls.serverProtocol, protocol );
+ if (cls.serverProtocol != protocol) {
+ if (!cls.demo.playback) {
+ Com_Error(ERR_DROP, "Requested protocol version %d, but server returned %d.",
+ cls.serverProtocol, protocol);
}
// BIG HACK to let demos from release work with the 3.0x patch!!!
- if( protocol < PROTOCOL_VERSION_OLD || protocol > PROTOCOL_VERSION_Q2PRO ) {
- Com_Error( ERR_DROP, "Demo uses unsupported protocol version %d.", protocol );
+ if (protocol < PROTOCOL_VERSION_OLD || protocol > PROTOCOL_VERSION_Q2PRO) {
+ Com_Error(ERR_DROP, "Demo uses unsupported protocol version %d.", protocol);
}
cls.serverProtocol = protocol;
}
// game directory
- len = MSG_ReadString( cl.gamedir, sizeof( cl.gamedir ) );
- if( len >= sizeof( cl.gamedir ) ) {
- Com_Error( ERR_DROP, "Oversize gamedir string" );
+ len = MSG_ReadString(cl.gamedir, sizeof(cl.gamedir));
+ if (len >= sizeof(cl.gamedir)) {
+ Com_Error(ERR_DROP, "Oversize gamedir string");
}
// never allow demos to change gamedir
// do not change gamedir if connected to local sever either,
// as it was already done by SV_InitGame, and changing it
// here will not work since server is now running
- if( !cls.demo.playback && !sv_running->integer ) {
+ if (!cls.demo.playback && !sv_running->integer) {
// pretend it has been set by user, so that 'changed' hook
// gets called and filesystem is restarted
- Cvar_UserSet( "game", cl.gamedir );
+ Cvar_UserSet("game", cl.gamedir);
// protect it from modifications while we are connected
fs_game->flags |= CVAR_ROM;
@@ -531,10 +535,10 @@ static void CL_ParseServerData( void ) {
cl.clientNum = MSG_ReadShort();
// get the full level name
- MSG_ReadString( levelname, sizeof( levelname ) );
+ MSG_ReadString(levelname, sizeof(levelname));
// setup default pmove parameters
- PmoveInit( &cl.pmp );
+ PmoveInit(&cl.pmp);
#if USE_FPS
// setup default frame times
@@ -543,80 +547,80 @@ static void CL_ParseServerData( void ) {
cl.framediv = 1;
#endif
- if( cls.serverProtocol == PROTOCOL_VERSION_R1Q2 ) {
+ if (cls.serverProtocol == PROTOCOL_VERSION_R1Q2) {
i = MSG_ReadByte();
- if( i ) {
- Com_Error( ERR_DROP, "'Enhanced' R1Q2 servers are not supported" );
+ if (i) {
+ Com_Error(ERR_DROP, "'Enhanced' R1Q2 servers are not supported");
}
i = MSG_ReadShort();
// for some reason, R1Q2 servers always report the highest protocol
// version they support, while still using the lower version
// client specified in the 'connect' packet. oh well...
- if( !R1Q2_SUPPORTED( i ) ) {
+ if (!R1Q2_SUPPORTED(i)) {
Com_WPrintf(
"R1Q2 server reports unsupported protocol version %d.\n"
"Assuming it really uses our current client version %d.\n"
- "Things will break if it does not!\n", i, PROTOCOL_VERSION_R1Q2_CURRENT );
- clamp( i, PROTOCOL_VERSION_R1Q2_MINIMUM, PROTOCOL_VERSION_R1Q2_CURRENT );
+ "Things will break if it does not!\n", i, PROTOCOL_VERSION_R1Q2_CURRENT);
+ clamp(i, PROTOCOL_VERSION_R1Q2_MINIMUM, PROTOCOL_VERSION_R1Q2_CURRENT);
}
- Com_DPrintf( "Using minor R1Q2 protocol version %d\n", i );
+ Com_DPrintf("Using minor R1Q2 protocol version %d\n", i);
cls.protocolVersion = i;
MSG_ReadByte(); // used to be advanced deltas
i = MSG_ReadByte();
- if( i ) {
- Com_DPrintf( "R1Q2 strafejump hack enabled\n" );
+ if (i) {
+ Com_DPrintf("R1Q2 strafejump hack enabled\n");
cl.pmp.strafehack = qtrue;
}
cl.esFlags |= MSG_ES_BEAMORIGIN;
- if( cls.protocolVersion >= PROTOCOL_VERSION_R1Q2_LONG_SOLID ) {
+ if (cls.protocolVersion >= PROTOCOL_VERSION_R1Q2_LONG_SOLID) {
cl.esFlags |= MSG_ES_LONGSOLID;
}
cl.pmp.speedmult = 2;
- } else if( cls.serverProtocol == PROTOCOL_VERSION_Q2PRO ) {
+ } else if (cls.serverProtocol == PROTOCOL_VERSION_Q2PRO) {
i = MSG_ReadShort();
- if( !Q2PRO_SUPPORTED( i ) ) {
- Com_Error( ERR_DROP,
- "Q2PRO server reports unsupported protocol version %d.\n"
- "Current client version is %d.", i, PROTOCOL_VERSION_Q2PRO_CURRENT );
+ if (!Q2PRO_SUPPORTED(i)) {
+ Com_Error(ERR_DROP,
+ "Q2PRO server reports unsupported protocol version %d.\n"
+ "Current client version is %d.", i, PROTOCOL_VERSION_Q2PRO_CURRENT);
}
- Com_DPrintf( "Using minor Q2PRO protocol version %d\n", i );
+ Com_DPrintf("Using minor Q2PRO protocol version %d\n", i);
cls.protocolVersion = i;
MSG_ReadByte(); // used to be gametype
i = MSG_ReadByte();
- if( i ) {
- Com_DPrintf( "Q2PRO strafejump hack enabled\n" );
+ if (i) {
+ Com_DPrintf("Q2PRO strafejump hack enabled\n");
cl.pmp.strafehack = qtrue;
}
i = MSG_ReadByte(); //atu QWMod
- if( i ) {
- Com_DPrintf( "Q2PRO QW mode enabled\n" );
- PmoveEnableQW( &cl.pmp );
+ if (i) {
+ Com_DPrintf("Q2PRO QW mode enabled\n");
+ PmoveEnableQW(&cl.pmp);
}
cl.esFlags |= MSG_ES_UMASK;
- if( cls.protocolVersion >= PROTOCOL_VERSION_Q2PRO_LONG_SOLID ) {
+ if (cls.protocolVersion >= PROTOCOL_VERSION_Q2PRO_LONG_SOLID) {
cl.esFlags |= MSG_ES_LONGSOLID;
}
- if( cls.protocolVersion >= PROTOCOL_VERSION_Q2PRO_BEAM_ORIGIN ) {
+ if (cls.protocolVersion >= PROTOCOL_VERSION_Q2PRO_BEAM_ORIGIN) {
cl.esFlags |= MSG_ES_BEAMORIGIN;
}
- if( cls.protocolVersion >= PROTOCOL_VERSION_Q2PRO_SHORT_ANGLES ) {
+ if (cls.protocolVersion >= PROTOCOL_VERSION_Q2PRO_SHORT_ANGLES) {
cl.esFlags |= MSG_ES_SHORTANGLES;
}
- if( cls.protocolVersion >= PROTOCOL_VERSION_Q2PRO_WATERJUMP_HACK ) {
+ if (cls.protocolVersion >= PROTOCOL_VERSION_Q2PRO_WATERJUMP_HACK) {
i = MSG_ReadByte();
- if( i ) {
- Com_DPrintf( "Q2PRO waterjump hack enabled\n" );
+ if (i) {
+ Com_DPrintf("Q2PRO waterjump hack enabled\n");
cl.pmp.waterhack = qtrue;
}
}
- cl.pmp.speedmult = 2;
+ cl.pmp.speedmult = 2;
cl.pmp.flyhack = qtrue; // fly hack is unconditionally enabled
cl.pmp.flyfriction = 4;
}
- if( cl.clientNum == -1 ) {
+ if (cl.clientNum == -1) {
// tell the server to advance to the next map / cinematic
- CL_ClientCommand( va( "nextserver %i\n", cl.servercount ) );
+ CL_ClientCommand(va("nextserver %i\n", cl.servercount));
} else {
// seperate the printfs so the server message can have a color
Con_Printf(
@@ -624,14 +628,14 @@ static void CL_ParseServerData( void ) {
"\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\37"
- "\n\n" );
+ "\n\n");
- Com_SetColor( COLOR_ALT );
- Com_Printf( "%s\n", levelname );
- Com_SetColor( COLOR_NONE );
+ Com_SetColor(COLOR_ALT);
+ Com_Printf("%s\n", levelname);
+ Com_SetColor(COLOR_NONE);
// make sure clientNum is in range
- if( cl.clientNum < 0 || cl.clientNum >= MAX_CLIENTS ) {
+ if (cl.clientNum < 0 || cl.clientNum >= MAX_CLIENTS) {
cl.clientNum = CLIENTNUM_NONE;
}
}
@@ -649,10 +653,11 @@ tent_params_t te;
mz_params_t mz;
snd_params_t snd;
-static void CL_ParseTEntPacket( void ) {
+static void CL_ParseTEntPacket(void)
+{
te.type = MSG_ReadByte();
- switch( te.type ) {
+ switch (te.type) {
case TE_BLOOD:
case TE_GUNSHOT:
case TE_SPARKS:
@@ -668,8 +673,8 @@ static void CL_ParseTEntPacket( void ) {
case TE_HEATBEAM_STEAM:
case TE_MOREBLOOD:
case TE_ELECTRIC_SPARKS:
- MSG_ReadPos( te.pos1 );
- MSG_ReadDir( te.dir );
+ MSG_ReadPos(te.pos1);
+ MSG_ReadDir(te.dir);
break;
case TE_SPLASH:
@@ -677,8 +682,8 @@ static void CL_ParseTEntPacket( void ) {
case TE_WELDING_SPARKS:
case TE_TUNNEL_SPARKS:
te.count = MSG_ReadByte();
- MSG_ReadPos( te.pos1 );
- MSG_ReadDir( te.dir );
+ MSG_ReadPos(te.pos1);
+ MSG_ReadDir(te.dir);
te.color = MSG_ReadByte();
break;
@@ -688,8 +693,8 @@ static void CL_ParseTEntPacket( void ) {
case TE_DEBUGTRAIL:
case TE_BUBBLETRAIL2:
case TE_BFG_LASER:
- MSG_ReadPos( te.pos1 );
- MSG_ReadPos( te.pos2 );
+ MSG_ReadPos(te.pos1);
+ MSG_ReadPos(te.pos2);
break;
case TE_GRENADE_EXPLOSION:
@@ -711,7 +716,7 @@ static void CL_ParseTEntPacket( void ) {
case TE_DBALL_GOAL:
case TE_WIDOWSPLASH:
case TE_NUKEBLAST:
- MSG_ReadPos( te.pos1 );
+ MSG_ReadPos(te.pos1);
break;
case TE_PARASITE_ATTACK:
@@ -719,63 +724,64 @@ static void CL_ParseTEntPacket( void ) {
case TE_HEATBEAM:
case TE_MONSTER_HEATBEAM:
te.entity1 = MSG_ReadShort();
- MSG_ReadPos( te.pos1 );
- MSG_ReadPos( te.pos2 );
+ MSG_ReadPos(te.pos1);
+ MSG_ReadPos(te.pos2);
break;
case TE_GRAPPLE_CABLE:
te.entity1 = MSG_ReadShort();
- MSG_ReadPos( te.pos1 );
- MSG_ReadPos( te.pos2 );
- MSG_ReadPos( te.offset );
+ MSG_ReadPos(te.pos1);
+ MSG_ReadPos(te.pos2);
+ MSG_ReadPos(te.offset);
break;
case TE_LIGHTNING:
te.entity1 = MSG_ReadShort();
te.entity2 = MSG_ReadShort();
- MSG_ReadPos( te.pos1 );
- MSG_ReadPos( te.pos2 );
+ MSG_ReadPos(te.pos1);
+ MSG_ReadPos(te.pos2);
break;
case TE_FLASHLIGHT:
- MSG_ReadPos( te.pos1 );
+ MSG_ReadPos(te.pos1);
te.entity1 = MSG_ReadShort();
break;
case TE_FORCEWALL:
- MSG_ReadPos( te.pos1 );
- MSG_ReadPos( te.pos2 );
+ MSG_ReadPos(te.pos1);
+ MSG_ReadPos(te.pos2);
te.color = MSG_ReadByte();
break;
case TE_STEAM:
te.entity1 = MSG_ReadShort();
te.count = MSG_ReadByte();
- MSG_ReadPos( te.pos1 );
- MSG_ReadDir( te.dir );
+ MSG_ReadPos(te.pos1);
+ MSG_ReadDir(te.dir);
te.color = MSG_ReadByte();
te.entity2 = MSG_ReadShort();
- if( te.entity1 != -1 ) {
+ if (te.entity1 != -1) {
te.time = MSG_ReadLong();
}
break;
case TE_WIDOWBEAMOUT:
te.entity1 = MSG_ReadShort();
- MSG_ReadPos( te.pos1 );
+ MSG_ReadPos(te.pos1);
break;
default:
- Com_Error( ERR_DROP, "%s: bad type", __func__ );
+ Com_Error(ERR_DROP, "%s: bad type", __func__);
}
}
-static void CL_ParseMuzzleFlashPacket( int mask ) {
+static void CL_ParseMuzzleFlashPacket(int mask)
+{
int entity, weapon;
entity = MSG_ReadShort();
- if( entity < 1 || entity >= MAX_EDICTS )
- Com_Error( ERR_DROP, "%s: bad entity", __func__ );
+ if (entity < 1 || entity >= MAX_EDICTS)
+ Com_Error(ERR_DROP, "%s: bad entity", __func__);
weapon = MSG_ReadByte();
mz.silenced = weapon & mask;
@@ -783,38 +789,39 @@ static void CL_ParseMuzzleFlashPacket( int mask ) {
mz.entity = entity;
}
-static void CL_ParseStartSoundPacket( void ) {
+static void CL_ParseStartSoundPacket(void)
+{
int flags, channel, entity;
flags = MSG_ReadByte();
- if( ( flags & (SND_ENT|SND_POS) ) == 0 )
- Com_Error( ERR_DROP, "%s: neither SND_ENT nor SND_POS set", __func__ );
+ if ((flags & (SND_ENT | SND_POS)) == 0)
+ Com_Error(ERR_DROP, "%s: neither SND_ENT nor SND_POS set", __func__);
snd.index = MSG_ReadByte();
- if( snd.index == -1 )
- Com_Error( ERR_DROP, "%s: read past end of message", __func__ );
+ if (snd.index == -1)
+ Com_Error(ERR_DROP, "%s: read past end of message", __func__);
- if( flags & SND_VOLUME )
+ if (flags & SND_VOLUME)
snd.volume = MSG_ReadByte() / 255.0f;
else
snd.volume = DEFAULT_SOUND_PACKET_VOLUME;
-
- if( flags & SND_ATTENUATION )
+
+ if (flags & SND_ATTENUATION)
snd.attenuation = MSG_ReadByte() / 64.0f;
else
snd.attenuation = DEFAULT_SOUND_PACKET_ATTENUATION;
- if( flags & SND_OFFSET )
+ if (flags & SND_OFFSET)
snd.timeofs = MSG_ReadByte() / 1000.0f;
else
snd.timeofs = 0;
- if( flags & SND_ENT ) {
+ if (flags & SND_ENT) {
// entity relative
- channel = MSG_ReadShort();
+ channel = MSG_ReadShort();
entity = channel >> 3;
- if( entity < 0 || entity >= MAX_EDICTS )
- Com_Error( ERR_DROP, "%s: bad entity: %d", __func__, entity );
+ if (entity < 0 || entity >= MAX_EDICTS)
+ Com_Error(ERR_DROP, "%s: bad entity: %d", __func__, entity);
snd.entity = entity;
snd.channel = channel & 7;
} else {
@@ -823,29 +830,30 @@ static void CL_ParseStartSoundPacket( void ) {
}
// positioned in space
- if( flags & SND_POS )
- MSG_ReadPos( snd.pos );
+ if (flags & SND_POS)
+ MSG_ReadPos(snd.pos);
snd.flags = flags;
- SHOWNET( 2, " %s\n", cl.configstrings[ CS_SOUNDS + snd.index ] );
+ SHOWNET(2, " %s\n", cl.configstrings[CS_SOUNDS + snd.index]);
}
-static void CL_ParseReconnect( void ) {
- if( cls.demo.playback ) {
- Com_Error( ERR_DISCONNECT, "Server disconnected" );
+static void CL_ParseReconnect(void)
+{
+ if (cls.demo.playback) {
+ Com_Error(ERR_DISCONNECT, "Server disconnected");
}
- Com_Printf( "Server disconnected, reconnecting\n" );
+ Com_Printf("Server disconnected, reconnecting\n");
// free netchan now to prevent `disconnect'
// message from being sent to server
- if( cls.netchan ) {
- Netchan_Close( cls.netchan );
+ if (cls.netchan) {
+ Netchan_Close(cls.netchan);
cls.netchan = NULL;
}
- CL_Disconnect( ERR_RECONNECT );
+ CL_Disconnect(ERR_RECONNECT);
cls.state = ca_challenging;
cls.connect_time -= CONNECT_FAST;
@@ -855,42 +863,43 @@ static void CL_ParseReconnect( void ) {
}
#if USE_AUTOREPLY
-static void CL_CheckForVersion( const char *s ) {
+static void CL_CheckForVersion(const char *s)
+{
char *p;
- p = strstr( s, ": " );
- if( !p ) {
+ p = strstr(s, ": ");
+ if (!p) {
return;
}
- if( strncmp( p + 2, "!version", 8 ) ) {
+ if (strncmp(p + 2, "!version", 8)) {
return;
}
- if( cl.reply_time && cls.realtime - cl.reply_time < 120000 ) {
+ if (cl.reply_time && cls.realtime - cl.reply_time < 120000) {
return;
}
cl.reply_time = cls.realtime;
- cl.reply_delta = 1024 + ( rand() & 1023 );
+ cl.reply_delta = 1024 + (rand() & 1023);
}
#endif
// attempt to scan out an IP address in dotted-quad notation and
// add it into circular array of recent addresses
-static void CL_CheckForIP( const char *s ) {
+static void CL_CheckForIP(const char *s)
+{
unsigned b1, b2, b3, b4, port;
netadr_t *a;
char *p;
- while( *s ) {
- if( sscanf( s, "%3u.%3u.%3u.%3u", &b1, &b2, &b3, &b4 ) == 4 &&
- b1 < 256 && b2 < 256 && b3 < 256 && b4 < 256 )
- {
- p = strchr( s, ':' );
- if( p ) {
- port = strtoul( p + 1, NULL, 10 );
- if( port < 1024 || port > 65535 ) {
+ while (*s) {
+ if (sscanf(s, "%3u.%3u.%3u.%3u", &b1, &b2, &b3, &b4) == 4 &&
+ b1 < 256 && b2 < 256 && b3 < 256 && b4 < 256) {
+ p = strchr(s, ':');
+ if (p) {
+ port = strtoul(p + 1, NULL, 10);
+ if (port < 1024 || port > 65535) {
break; // privileged or invalid port
}
} else {
@@ -903,7 +912,7 @@ static void CL_CheckForIP( const char *s ) {
a->ip.u8[1] = b2;
a->ip.u8[2] = b3;
a->ip.u8[3] = b4;
- a->port = BigShort( port );
+ a->port = BigShort(port);
break;
}
@@ -911,208 +920,217 @@ static void CL_CheckForIP( const char *s ) {
}
}
-static void CL_ParsePrint( void ) {
+static void CL_ParsePrint(void)
+{
int level;
char s[MAX_STRING_CHARS];
const char *fmt;
level = MSG_ReadByte();
- MSG_ReadString( s, sizeof( s ) );
+ MSG_ReadString(s, sizeof(s));
- SHOWNET( 2, " %i \"%s\"\n", level, s );
+ SHOWNET(2, " %i \"%s\"\n", level, s);
- if( level != PRINT_CHAT ) {
- Com_Printf( "%s", s );
- if( !cls.demo.playback ) {
- COM_strclr( s );
- Cmd_ExecTrigger( s );
+ if (level != PRINT_CHAT) {
+ Com_Printf("%s", s);
+ if (!cls.demo.playback) {
+ COM_strclr(s);
+ Cmd_ExecTrigger(s);
}
return;
}
- if( CL_CheckForIgnore( s ) ) {
+ if (CL_CheckForIgnore(s)) {
return;
}
#if USE_AUTOREPLY
- if( !cls.demo.playback ) {
- CL_CheckForVersion( s );
+ if (!cls.demo.playback) {
+ CL_CheckForVersion(s);
}
#endif
- CL_CheckForIP( s );
+ CL_CheckForIP(s);
// disable notify
- if( !cl_chat_notify->integer ) {
- Con_SkipNotify( qtrue );
+ if (!cl_chat_notify->integer) {
+ Con_SkipNotify(qtrue);
}
// filter text
- if( cl_chat_filter->integer ) {
- COM_strclr( s );
+ if (cl_chat_filter->integer) {
+ COM_strclr(s);
fmt = "%s\n";
} else {
fmt = "%s";
}
- Com_LPrintf( PRINT_TALK, fmt, s );
+ Com_LPrintf(PRINT_TALK, fmt, s);
- Con_SkipNotify( qfalse );
+ Con_SkipNotify(qfalse);
#if USE_CHATHUD
- SCR_AddToChatHUD( s );
+ SCR_AddToChatHUD(s);
#endif
// play sound
- if( cl_chat_sound->integer > 1 )
- S_StartLocalSound_( "misc/talk1.wav" );
- else if( cl_chat_sound->integer > 0 )
- S_StartLocalSound_( "misc/talk.wav" );
+ if (cl_chat_sound->integer > 1)
+ S_StartLocalSound_("misc/talk1.wav");
+ else if (cl_chat_sound->integer > 0)
+ S_StartLocalSound_("misc/talk.wav");
}
-static void CL_ParseCenterPrint( void ) {
+static void CL_ParseCenterPrint(void)
+{
char s[MAX_STRING_CHARS];
- MSG_ReadString( s, sizeof( s ) );
- SHOWNET( 2, " \"%s\"\n", s );
- SCR_CenterPrint( s );
+ MSG_ReadString(s, sizeof(s));
+ SHOWNET(2, " \"%s\"\n", s);
+ SCR_CenterPrint(s);
- if( !cls.demo.playback ) {
- COM_strclr( s );
- Cmd_ExecTrigger( s );
+ if (!cls.demo.playback) {
+ COM_strclr(s);
+ Cmd_ExecTrigger(s);
}
}
-static void CL_ParseStuffText( void ) {
+static void CL_ParseStuffText(void)
+{
char s[MAX_STRING_CHARS];
- MSG_ReadString( s, sizeof( s ) );
- SHOWNET( 2, " \"%s\"\n", s );
- Cbuf_AddText( &cl_cmdbuf, s );
+ MSG_ReadString(s, sizeof(s));
+ SHOWNET(2, " \"%s\"\n", s);
+ Cbuf_AddText(&cl_cmdbuf, s);
}
-static void CL_ParseLayout( void ) {
- MSG_ReadString( cl.layout, sizeof( cl.layout ) );
- SHOWNET( 2, " \"%s\"\n", cl.layout );
+static void CL_ParseLayout(void)
+{
+ MSG_ReadString(cl.layout, sizeof(cl.layout));
+ SHOWNET(2, " \"%s\"\n", cl.layout);
cl.putaway = qfalse;
}
-static void CL_ParseInventory( void ) {
+static void CL_ParseInventory(void)
+{
int i;
- for( i = 0; i < MAX_ITEMS; i++ ) {
+ for (i = 0; i < MAX_ITEMS; i++) {
cl.inventory[i] = MSG_ReadShort();
}
cl.putaway = qfalse;
}
-static void CL_ParseDownload( void ) {
+static void CL_ParseDownload(void)
+{
int size, percent;
byte *data;
- if( !cls.download.temp[0] ) {
- Com_Error( ERR_DROP, "%s: no download requested", __func__ );
+ if (!cls.download.temp[0]) {
+ Com_Error(ERR_DROP, "%s: no download requested", __func__);
}
// read the data
size = MSG_ReadShort();
percent = MSG_ReadByte();
- if( size == -1 ) {
- CL_HandleDownload( NULL, size, percent );
+ if (size == -1) {
+ CL_HandleDownload(NULL, size, percent);
return;
}
- if( size < 0 ) {
- Com_Error( ERR_DROP, "%s: bad size: %d", __func__, size );
+ if (size < 0) {
+ Com_Error(ERR_DROP, "%s: bad size: %d", __func__, size);
}
- if( msg_read.readcount + size > msg_read.cursize ) {
- Com_Error( ERR_DROP, "%s: read past end of message", __func__ );
+ if (msg_read.readcount + size > msg_read.cursize) {
+ Com_Error(ERR_DROP, "%s: read past end of message", __func__);
}
data = msg_read.data + msg_read.readcount;
msg_read.readcount += size;
- CL_HandleDownload( data, size, percent );
+ CL_HandleDownload(data, size, percent);
}
-static void CL_ParseZPacket( void ) {
+static void CL_ParseZPacket(void)
+{
#if USE_ZLIB
sizebuf_t temp;
byte buffer[MAX_MSGLEN];
int inlen, outlen;
- if( msg_read.data != msg_read_buffer ) {
- Com_Error( ERR_DROP, "%s: recursively entered", __func__ );
+ if (msg_read.data != msg_read_buffer) {
+ Com_Error(ERR_DROP, "%s: recursively entered", __func__);
}
inlen = MSG_ReadWord();
outlen = MSG_ReadWord();
- if( inlen == -1 || outlen == -1 || msg_read.readcount + inlen > msg_read.cursize ) {
- Com_Error( ERR_DROP, "%s: read past end of message", __func__ );
+ if (inlen == -1 || outlen == -1 || msg_read.readcount + inlen > msg_read.cursize) {
+ Com_Error(ERR_DROP, "%s: read past end of message", __func__);
}
- if( outlen > MAX_MSGLEN ) {
- Com_Error( ERR_DROP, "%s: invalid output length", __func__ );
+ if (outlen > MAX_MSGLEN) {
+ Com_Error(ERR_DROP, "%s: invalid output length", __func__);
}
- inflateReset( &cls.z );
+ inflateReset(&cls.z);
cls.z.next_in = msg_read.data + msg_read.readcount;
- cls.z.avail_in = ( uInt )inlen;
+ cls.z.avail_in = (uInt)inlen;
cls.z.next_out = buffer;
- cls.z.avail_out = ( uInt )outlen;
- if( inflate( &cls.z, Z_FINISH ) != Z_STREAM_END ) {
- Com_Error( ERR_DROP, "%s: inflate() failed: %s", __func__, cls.z.msg );
+ cls.z.avail_out = (uInt)outlen;
+ if (inflate(&cls.z, Z_FINISH) != Z_STREAM_END) {
+ Com_Error(ERR_DROP, "%s: inflate() failed: %s", __func__, cls.z.msg);
}
msg_read.readcount += inlen;
temp = msg_read;
- SZ_Init( &msg_read, buffer, outlen );
+ SZ_Init(&msg_read, buffer, outlen);
msg_read.cursize = outlen;
CL_ParseServerMessage();
msg_read = temp;
#else
- Com_Error( ERR_DROP, "Compressed server packet received, "
- "but no zlib support linked in." );
+ Com_Error(ERR_DROP, "Compressed server packet received, "
+ "but no zlib support linked in.");
#endif
}
#if USE_FPS
-static void set_server_fps( int value ) {
+static void set_server_fps(int value)
+{
int framediv = value / BASE_FRAMERATE;
- clamp( framediv, 1, MAX_FRAMEDIV );
+ clamp(framediv, 1, MAX_FRAMEDIV);
cl.frametime = BASE_FRAMETIME / framediv;
cl.frametime_inv = framediv * BASE_1_FRAMETIME;
cl.framediv = framediv;
// fix time delta
- if( cls.state == ca_active ) {
+ if (cls.state == ca_active) {
int delta = cl.frame.number - cl.servertime / cl.frametime;
- cl.serverdelta = Q_align( delta, framediv );
+ cl.serverdelta = Q_align(delta, framediv);
}
- Com_DPrintf( "client framediv=%d time=%d delta=%d\n",
- framediv, cl.servertime, cl.serverdelta );
+ Com_DPrintf("client framediv=%d time=%d delta=%d\n",
+ framediv, cl.servertime, cl.serverdelta);
}
#endif
-static void CL_ParseSetting( void ) {
+static void CL_ParseSetting(void)
+{
uint32_t index, value;
index = MSG_ReadLong();
value = MSG_ReadLong();
- switch( index ) {
+ switch (index) {
#if USE_FPS
case SVS_FPS:
- set_server_fps( value );
+ set_server_fps(value);
break;
#endif
default:
@@ -1125,31 +1143,32 @@ static void CL_ParseSetting( void ) {
CL_ParseServerMessage
=====================
*/
-void CL_ParseServerMessage( void ) {
+void CL_ParseServerMessage(void)
+{
int cmd, extrabits;
size_t readcount;
int index, bits;
#ifdef _DEBUG
- if( cl_shownet->integer == 1 ) {
- Com_LPrintf( PRINT_DEVELOPER, "%"PRIz" ", msg_read.cursize );
- } else if( cl_shownet->integer > 1 ) {
- Com_LPrintf( PRINT_DEVELOPER, "------------------\n" );
+ if (cl_shownet->integer == 1) {
+ Com_LPrintf(PRINT_DEVELOPER, "%"PRIz" ", msg_read.cursize);
+ } else if (cl_shownet->integer > 1) {
+ Com_LPrintf(PRINT_DEVELOPER, "------------------\n");
}
#endif
//
// parse the message
//
- while( 1 ) {
- if( msg_read.readcount > msg_read.cursize ) {
- Com_Error( ERR_DROP, "%s: read past end of server message", __func__ );
+ while (1) {
+ if (msg_read.readcount > msg_read.cursize) {
+ Com_Error(ERR_DROP, "%s: read past end of server message", __func__);
}
readcount = msg_read.readcount;
- if( ( cmd = MSG_ReadByte() ) == -1 ) {
- SHOWNET( 1, "%3"PRIz":END OF MESSAGE\n", msg_read.readcount - 1 );
+ if ((cmd = MSG_ReadByte()) == -1) {
+ SHOWNET(1, "%3"PRIz":END OF MESSAGE\n", msg_read.readcount - 1);
break;
}
@@ -1157,23 +1176,23 @@ void CL_ParseServerMessage( void ) {
cmd &= SVCMD_MASK;
#ifdef _DEBUG
- if( cl_shownet->integer > 1 ) {
- MSG_ShowSVC( cmd );
+ if (cl_shownet->integer > 1) {
+ MSG_ShowSVC(cmd);
}
#endif
-
- // other commands
- switch( cmd ) {
+
+ // other commands
+ switch (cmd) {
default:
- badbyte:
- Com_Error( ERR_DROP, "%s: illegible server message: %d", __func__, cmd );
+badbyte:
+ Com_Error(ERR_DROP, "%s: illegible server message: %d", __func__, cmd);
break;
-
+
case svc_nop:
break;
-
+
case svc_disconnect:
- Com_Error( ERR_DISCONNECT, "Server disconnected" );
+ Com_Error(ERR_DISCONNECT, "Server disconnected");
break;
case svc_reconnect:
@@ -1183,32 +1202,32 @@ void CL_ParseServerMessage( void ) {
case svc_print:
CL_ParsePrint();
break;
-
+
case svc_centerprint:
CL_ParseCenterPrint();
break;
-
+
case svc_stufftext:
CL_ParseStuffText();
break;
-
+
case svc_serverdata:
CL_ParseServerData();
continue;
-
+
case svc_configstring:
index = MSG_ReadShort();
- CL_ParseConfigstring( index );
+ CL_ParseConfigstring(index);
break;
-
+
case svc_sound:
CL_ParseStartSoundPacket();
S_ParseStartSound();
break;
-
+
case svc_spawnbaseline:
- index = MSG_ParseEntityBits( &bits );
- CL_ParseBaseline( index, bits );
+ index = MSG_ParseEntityBits(&bits);
+ CL_ParseBaseline(index, bits);
break;
case svc_temp_entity:
@@ -1217,12 +1236,12 @@ void CL_ParseServerMessage( void ) {
break;
case svc_muzzleflash:
- CL_ParseMuzzleFlashPacket( MZ_SILENCED );
+ CL_ParseMuzzleFlashPacket(MZ_SILENCED);
CL_MuzzleFlash();
break;
case svc_muzzleflash2:
- CL_ParseMuzzleFlashPacket( 0 );
+ CL_ParseMuzzleFlashPacket(0);
CL_MuzzleFlash2();
break;
@@ -1231,7 +1250,7 @@ void CL_ParseServerMessage( void ) {
continue;
case svc_frame:
- CL_ParseFrame( extrabits );
+ CL_ParseFrame(extrabits);
continue;
case svc_inventory:
@@ -1243,21 +1262,21 @@ void CL_ParseServerMessage( void ) {
break;
case svc_zpacket:
- if( cls.serverProtocol < PROTOCOL_VERSION_R1Q2 ) {
+ if (cls.serverProtocol < PROTOCOL_VERSION_R1Q2) {
goto badbyte;
}
CL_ParseZPacket();
continue;
case svc_gamestate:
- if( cls.serverProtocol != PROTOCOL_VERSION_Q2PRO ) {
+ if (cls.serverProtocol != PROTOCOL_VERSION_Q2PRO) {
goto badbyte;
}
CL_ParseGamestate();
continue;
case svc_setting:
- if( cls.serverProtocol < PROTOCOL_VERSION_R1Q2 ) {
+ if (cls.serverProtocol < PROTOCOL_VERSION_R1Q2) {
goto badbyte;
}
CL_ParseSetting();
@@ -1265,14 +1284,14 @@ void CL_ParseServerMessage( void ) {
}
// if recording demos, copy off protocol invariant stuff
- if( cls.demo.recording && !cls.demo.paused ) {
+ if (cls.demo.recording && !cls.demo.paused) {
size_t len = msg_read.readcount - readcount;
// it is very easy to overflow standard 1390 bytes
// demo frame with modern servers... attempt to preserve
// reliable messages at least, assuming they come first
- if( cls.demo.buffer.cursize + len < cls.demo.buffer.maxsize ) {
- SZ_Write( &cls.demo.buffer, msg_read.data + readcount, len );
+ if (cls.demo.buffer.cursize + len < cls.demo.buffer.maxsize) {
+ SZ_Write(&cls.demo.buffer, msg_read.data + readcount, len);
} else {
cls.demo.messages_dropped++;
}
@@ -1280,12 +1299,12 @@ void CL_ParseServerMessage( void ) {
}
// if recording demos, write the message out
- if( cls.demo.recording && !cls.demo.paused && CL_FRAMESYNC ) {
- CL_WriteDemoMessage( &cls.demo.buffer );
+ if (cls.demo.recording && !cls.demo.paused && CL_FRAMESYNC) {
+ CL_WriteDemoMessage(&cls.demo.buffer);
}
// if playing demos, save a snapshot once the full packet is parsed
- if( cls.demo.playback )
+ if (cls.demo.playback)
CL_EmitDemoSnapshot();
}
@@ -1297,28 +1316,29 @@ A variant of ParseServerMessage that skips over non-important action messages,
used for seeking in demos.
=====================
*/
-void CL_SeekDemoMessage( void ) {
+void CL_SeekDemoMessage(void)
+{
int cmd, extrabits;
int index;
#ifdef _DEBUG
- if( cl_shownet->integer == 1 ) {
- Com_LPrintf( PRINT_DEVELOPER, "%"PRIz" ", msg_read.cursize );
- } else if( cl_shownet->integer > 1 ) {
- Com_LPrintf( PRINT_DEVELOPER, "------------------\n" );
+ if (cl_shownet->integer == 1) {
+ Com_LPrintf(PRINT_DEVELOPER, "%"PRIz" ", msg_read.cursize);
+ } else if (cl_shownet->integer > 1) {
+ Com_LPrintf(PRINT_DEVELOPER, "------------------\n");
}
#endif
//
// parse the message
//
- while( 1 ) {
- if( msg_read.readcount > msg_read.cursize ) {
- Com_Error( ERR_DROP, "%s: read past end of server message", __func__ );
+ while (1) {
+ if (msg_read.readcount > msg_read.cursize) {
+ Com_Error(ERR_DROP, "%s: read past end of server message", __func__);
}
- if( ( cmd = MSG_ReadByte() ) == -1 ) {
- SHOWNET( 1, "%3"PRIz":END OF MESSAGE\n", msg_read.readcount - 1 );
+ if ((cmd = MSG_ReadByte()) == -1) {
+ SHOWNET(1, "%3"PRIz":END OF MESSAGE\n", msg_read.readcount - 1);
break;
}
@@ -1326,15 +1346,15 @@ void CL_SeekDemoMessage( void ) {
cmd &= SVCMD_MASK;
#ifdef _DEBUG
- if( cl_shownet->integer > 1 ) {
- MSG_ShowSVC( cmd );
+ if (cl_shownet->integer > 1) {
+ MSG_ShowSVC(cmd);
}
#endif
- // other commands
- switch( cmd ) {
+ // other commands
+ switch (cmd) {
default:
- Com_Error( ERR_DROP, "%s: illegible server message: %d", __func__, cmd );
+ Com_Error(ERR_DROP, "%s: illegible server message: %d", __func__, cmd);
break;
case svc_nop:
@@ -1342,7 +1362,7 @@ void CL_SeekDemoMessage( void ) {
case svc_disconnect:
case svc_reconnect:
- Com_Error( ERR_DISCONNECT, "Server disconnected" );
+ Com_Error(ERR_DISCONNECT, "Server disconnected");
break;
case svc_print:
@@ -1351,12 +1371,12 @@ void CL_SeekDemoMessage( void ) {
case svc_centerprint:
case svc_stufftext:
- MSG_ReadString( NULL, 0 );
+ MSG_ReadString(NULL, 0);
break;
case svc_configstring:
index = MSG_ReadShort();
- CL_ParseConfigstring( index );
+ CL_ParseConfigstring(index);
break;
case svc_sound:
@@ -1369,11 +1389,11 @@ void CL_SeekDemoMessage( void ) {
case svc_muzzleflash:
case svc_muzzleflash2:
- CL_ParseMuzzleFlashPacket( 0 );
+ CL_ParseMuzzleFlashPacket(0);
break;
case svc_frame:
- CL_ParseFrame( extrabits );
+ CL_ParseFrame(extrabits);
continue;
case svc_inventory: