summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cl_ents.c55
-rw-r--r--src/cl_parse.c52
2 files changed, 55 insertions, 52 deletions
diff --git a/src/cl_ents.c b/src/cl_ents.c
index 1cef64d..b1df67c 100644
--- a/src/cl_ents.c
+++ b/src/cl_ents.c
@@ -159,8 +159,56 @@ static void CL_EntityEvent (int number) {
/*
==================
+CL_SetActiveState
+
+==================
+*/
+static void CL_SetActiveState( void ) {
+ cl.serverdelta = cl.frame.number;
+ cl.time = cl.servertime = 0; // set time, needed for demos
+ cls.state = ca_active;
+ cl.oldframe.valid = qfalse;
+ cl.frameflags = 0;
+ cl.putaway = qfalse;
+ if( cls.netchan ) {
+ cl.initialSeq = cls.netchan->outgoing_sequence;
+ }
+
+ // set initial cl.predicted_origin and cl.predicted_angles
+ if( !cls.demo.playback ) {
+ VectorScale( cl.frame.ps.pmove.origin, 0.125f, cl.predicted_origin );
+ VectorScale( cl.frame.ps.pmove.velocity, 0.125f, cl.predicted_velocity );
+ if( cl.frame.ps.pmove.pm_type < PM_DEAD &&
+ cls.serverProtocol > PROTOCOL_VERSION_DEFAULT )
+ {
+ // enhanced servers don't send viewangles
+ CL_PredictAngles();
+ } else {
+ // just use what server provided
+ VectorCopy( cl.frame.ps.viewangles, cl.predicted_angles );
+ }
+ }
+
+ SCR_EndLoadingPlaque (); // get rid of loading plaque
+ SCR_LagClear();
+ Con_Close( qfalse ); // get rid of connection screen
+
+ CL_UpdateFrameTimes();
+
+ if( !cls.demo.playback ) {
+ EXEC_TRIGGER( cl_beginmapcmd );
+ Cmd_ExecTrigger( "#cl_enterlevel" );
+ }
+
+ Cvar_Set( "cl_paused", "0" );
+}
+
+
+/*
+==================
CL_DeltaFrame
+A valid frame has been parsed.
==================
*/
void CL_DeltaFrame( void ) {
@@ -168,6 +216,11 @@ void CL_DeltaFrame( void ) {
entity_state_t *state;
int i, j;
+ // getting a valid frame message ends the connection process
+ if( cls.state == ca_precached ) {
+ CL_SetActiveState();
+ }
+
// set server time
cl.servertime = ( cl.frame.number - cl.serverdelta ) * cl.frametime;
cl.numSolidEntities = 0;
@@ -208,6 +261,8 @@ void CL_DeltaFrame( void ) {
}
SCR_SetCrosshairColor();
+
+ CL_CheckPredictionError();
}
diff --git a/src/cl_parse.c b/src/cl_parse.c
index 289b3a9..b17ec82 100644
--- a/src/cl_parse.c
+++ b/src/cl_parse.c
@@ -233,51 +233,6 @@ static void CL_ParsePacketEntities( server_frame_t *oldframe,
/*
================
-CL_SetActiveState
-================
-*/
-static void CL_SetActiveState( void ) {
- cl.serverdelta = cl.frame.number;
- cl.time = cl.servertime = 0; // set time, needed for demos
- cls.state = ca_active;
- cl.oldframe.valid = qfalse;
- cl.frameflags = 0;
- cl.putaway = qfalse;
- if( cls.netchan ) {
- cl.initialSeq = cls.netchan->outgoing_sequence;
- }
-
- // set initial cl.predicted_origin and cl.predicted_angles
- if( !cls.demo.playback ) {
- VectorScale( cl.frame.ps.pmove.origin, 0.125f, cl.predicted_origin );
- VectorScale( cl.frame.ps.pmove.velocity, 0.125f, cl.predicted_velocity );
- if( cl.frame.ps.pmove.pm_type < PM_DEAD &&
- cls.serverProtocol > PROTOCOL_VERSION_DEFAULT )
- {
- // enhanced servers don't send viewangles
- CL_PredictAngles();
- } else {
- // just use what server provided
- VectorCopy( cl.frame.ps.viewangles, cl.predicted_angles );
- }
- }
-
- SCR_EndLoadingPlaque (); // get rid of loading plaque
- SCR_LagClear();
- Con_Close( qfalse ); // get rid of connection screen
-
- CL_UpdateFrameTimes();
-
- if( !cls.demo.playback ) {
- EXEC_TRIGGER( cl_beginmapcmd );
- Cmd_ExecTrigger( "#cl_enterlevel" );
- }
-
- Cvar_Set( "cl_paused", "0" );
-}
-
-/*
-================
CL_ParseFrame
================
*/
@@ -477,14 +432,7 @@ static void CL_ParseFrame( int extrabits ) {
cl.oldframe = cl.frame;
cl.frame = frame;
- // getting a valid frame message ends the connection process
- if( cls.state == ca_precached ) {
- CL_SetActiveState();
- }
-
CL_DeltaFrame();
-
- CL_CheckPredictionError();
}