summaryrefslogtreecommitdiff
path: root/source/cl_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/cl_main.c')
-rw-r--r--source/cl_main.c116
1 files changed, 72 insertions, 44 deletions
diff --git a/source/cl_main.c b/source/cl_main.c
index 87bfa9d..eab6301 100644
--- a/source/cl_main.c
+++ b/source/cl_main.c
@@ -76,7 +76,8 @@ cvar_t *cl_disconnectcmd;
cvar_t *cl_changemapcmd;
cvar_t *cl_beginmapcmd;
-cvar_t *cl_gibs;
+cvar_t *cl_gibs;
+cvar_t *cl_updaterate;
cvar_t *cl_protocol;
@@ -152,11 +153,10 @@ CL_UpdateGunSetting
static void CL_UpdateGunSetting( void ) {
int nogun;
- if ( cls.state < ca_connected || cls.state > ca_active ) {
+ if( cls.state < ca_connected ) {
return;
}
-
- if ( cls.serverProtocol < PROTOCOL_VERSION_R1Q2 ) {
+ if( cls.serverProtocol < PROTOCOL_VERSION_R1Q2 ) {
return;
}
@@ -180,11 +180,11 @@ CL_UpdateGibSetting
===================
*/
static void CL_UpdateGibSetting( void ) {
- if ( cls.state < ca_connected || cls.state > ca_active ) {
+ if( cls.state < ca_connected ) {
return;
}
- if ( cls.serverProtocol != PROTOCOL_VERSION_Q2PRO ) {
+ if( cls.serverProtocol != PROTOCOL_VERSION_Q2PRO ) {
return;
}
@@ -200,11 +200,10 @@ CL_UpdateFootstepsSetting
===================
*/
static void CL_UpdateFootstepsSetting( void ) {
- if ( cls.state < ca_connected || cls.state > ca_active ) {
+ if( cls.state < ca_connected ) {
return;
}
-
- if ( cls.serverProtocol != PROTOCOL_VERSION_Q2PRO ) {
+ if( cls.serverProtocol != PROTOCOL_VERSION_Q2PRO ) {
return;
}
@@ -220,11 +219,10 @@ CL_UpdatePredictSetting
===================
*/
static void CL_UpdatePredictSetting( void ) {
- if ( cls.state < ca_connected || cls.state > ca_active ) {
+ if( cls.state < ca_connected ) {
return;
}
-
- if ( cls.serverProtocol != PROTOCOL_VERSION_Q2PRO ) {
+ if( cls.serverProtocol != PROTOCOL_VERSION_Q2PRO ) {
return;
}
@@ -234,6 +232,20 @@ static void CL_UpdatePredictSetting( void ) {
MSG_FlushTo( &cls.netchan->message );
}
+static void CL_UpdateRateSetting( void ) {
+ if( cls.state < ca_connected ) {
+ return;
+ }
+ if( cls.serverProtocol != PROTOCOL_VERSION_R1Q2 ) {
+ return;
+ }
+
+ MSG_WriteByte( clc_setting );
+ MSG_WriteShort( CLS_FPS );
+ MSG_WriteShort( cl_updaterate->integer );
+ MSG_FlushTo( &cls.netchan->message );
+}
+
/*
===================
CL_ClientCommand
@@ -705,19 +717,21 @@ static void CL_ServerStatus_f( void ) {
netadr_t adr;
neterr_t ret;
- if ( Cmd_Argc() < 2 ) {
- Com_Printf( "Usage: %s <server>\n", Cmd_Argv( 0 ) );
- return;
- }
-
- s = Cmd_Argv( 1 );
- if ( !NET_StringToAdr( s, &adr ) ) {
- Com_Printf( "Bad address: %s\n", s );
- return;
- }
-
- if ( !adr.port ) {
- adr.port = BigShort( PORT_SERVER );
+ if( Cmd_Argc() < 2 ) {
+ if( !cls.netchan ) {
+ Com_Printf( "Usage: %s [address]\n", Cmd_Argv( 0 ) );
+ return;
+ }
+ adr = cls.netchan->remote_address;
+ } else {
+ s = Cmd_Argv( 1 );
+ if( !NET_StringToAdr( s, &adr ) ) {
+ Com_Printf( "Bad address: %s\n", s );
+ return;
+ }
+ if( !adr.port ) {
+ adr.port = BigShort( PORT_SERVER );
+ }
}
CL_AddRequest( &adr, REQ_STATUS );
@@ -728,7 +742,6 @@ static void CL_ServerStatus_f( void ) {
if( ret == NET_ERROR ) {
Com_Printf( "%s to %s\n", NET_ErrorString(), NET_AdrToString( &adr ) );
}
-
}
/*
@@ -802,8 +815,9 @@ static qboolean CL_ServerStatusResponse( const char *status,
void CL_DumpServerInfo( const serverStatus_t *status ) {
char key[MAX_STRING_CHARS];
char value[MAX_STRING_CHARS];
- const playerStatus_t *player, *last;
+ const playerStatus_t *player;
const char *infostring;
+ int i;
Com_Printf( "Info response from %s:\n",
NET_AdrToString( &net_from ) );
@@ -823,10 +837,9 @@ void CL_DumpServerInfo( const serverStatus_t *status ) {
}
} while( infostring );
- Com_Printf( "\nScore Ping Name\n" );
- last = status->players + status->numPlayers;
- for( player = status->players; player != last; player++ ) {
- Com_Printf( "%5i %4i %s\n", player->score, player->ping,
+ Com_Printf( "\nNum Score Ping Name\n" );
+ for( i = 0, player = status->players; i < status->numPlayers; i++, player++ ) {
+ Com_Printf( "%3i %5i %4i %s\n", i + 1, player->score, player->ping,
player->name );
}
}
@@ -1314,7 +1327,7 @@ static void CL_ConnectionlessPacket( void ) {
}
}
- Com_Printf( "Connection to %s established (protocol %d).\n",
+ Com_Printf( "Connected to %s (protocol %d).\n",
NET_AdrToString( &cls.serverAddress ), cls.serverProtocol );
if( cls.netchan ) {
// this may happen after svc_reconnect
@@ -1845,6 +1858,7 @@ void CL_RequestNextDownload ( void ) {
CL_UpdateGibSetting();
CL_UpdateFootstepsSetting();
CL_UpdatePredictSetting();
+ CL_UpdateRateSetting();
cls.state = ca_precached;
}
@@ -2260,6 +2274,10 @@ static void cl_predict_changed( cvar_t *self ) {
CL_UpdatePredictSetting();
}
+static void cl_updaterate_changed( cvar_t *self ) {
+ CL_UpdateRateSetting();
+}
+
static void CL_GetClientStatus( clientStatus_t *status ) {
if( !status ) {
Com_Error( ERR_DROP, "CL_GetClientStatus: NULL" );
@@ -2391,6 +2409,9 @@ static void CL_InitLocal ( void ) {
cl_gibs = Cvar_Get( "cl_gibs", "1", 0 );
cl_gibs->changed = cl_gibs_changed;
+ cl_updaterate = Cvar_Get( "cl_updaterate", "0", 0 );
+ cl_updaterate->changed = cl_updaterate_changed;
+
cl_chat_notify = Cvar_Get( "cl_chat_notify", "1", 0 );
cl_chat_sound = Cvar_Get( "cl_chat_sound", "misc/talk.wav", 0 );
cl_chat_filter = Cvar_Get( "cl_chat_filter", "0", 0 );
@@ -2480,26 +2501,33 @@ CL_SetClientTime
==================
*/
static void CL_SetClientTime( void ) {
- if ( cl.time > cl.serverTime ) {
- if ( cl_showclamp->integer )
+ int prevtime;
+
+ if( com_timedemo->integer ) {
+ cl.time = cl.serverTime;
+ cl.lerpfrac = 1.0f;
+ return;
+ }
+
+ prevtime = cl.serverTime - cl.frametime;
+ if( cl.time > cl.serverTime ) {
+ if( cl_showclamp->integer )
Com_Printf( "high clamp %i\n", cl.time - cl.serverTime );
cl.time = cl.serverTime;
cl.lerpfrac = 1.0f;
- } else if ( cl.time < cl.serverTime - 100 ) {
- if ( cl_showclamp->integer )
- Com_Printf( "low clamp %i\n", cl.time - cl.serverTime + 100 );
- cl.time = cl.serverTime - 100;
+ } else if( cl.time < prevtime ) {
+ if( cl_showclamp->integer )
+ Com_Printf( "low clamp %i\n", prevtime - cl.time );
+ cl.time = prevtime;
cl.lerpfrac = 0;
} else {
- cl.lerpfrac = ( cl.time - cl.serverTime + 100 ) * 0.01f;
+ cl.lerpfrac = ( cl.time - prevtime ) * cl.framefrac;
}
- if ( com_timedemo->integer ) {
- cl.lerpfrac = 1.0f;
+ if( cl_showclamp->integer == 2 ) {
+ Com_Printf( "time %i, lerpfrac %.3f\n",
+ cl.time, cl.lerpfrac );
}
-
- if ( cl_showclamp->integer == 2 )
- Com_Printf( "time %i, lerpfrac %.3f\n", cl.time, cl.lerpfrac );
}
static void CL_MeasureStats( void ) {