diff options
Diffstat (limited to 'src/cl_input.c')
-rw-r--r-- | src/cl_input.c | 744 |
1 files changed, 394 insertions, 350 deletions
diff --git a/src/cl_input.c b/src/cl_input.c index 6693269..ba602c0 100644 --- a/src/cl_input.c +++ b/src/cl_input.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. @@ -92,34 +92,35 @@ static cvar_t *in_direct; static cvar_t *in_smart_grab; static cvar_t *in_hide_delay; -static inline grab_t get_grab_mode( void ) { +static inline grab_t get_grab_mode(void) +{ // never grab if main window doesn't have focus - if( cls.active != ACT_ACTIVATED ) + if (cls.active != ACT_ACTIVATED) return IN_FREE; // always grab in full screen - if( r_config.flags & QVF_FULLSCREEN ) + if (r_config.flags & QVF_FULLSCREEN) return IN_GRAB; // show cursor if menu is up - if( cls.key_dest & KEY_MENU ) + if (cls.key_dest & KEY_MENU) return IN_SHOW; // hide cursor, but don't grab if console is up - if( cls.key_dest & KEY_CONSOLE ) + if (cls.key_dest & KEY_CONSOLE) return IN_HIDE; - if( sv_paused->integer ) + if (sv_paused->integer) return IN_HIDE; - if( cls.state < ca_active ) + if (cls.state < ca_active) return IN_HIDE; // don't grab if mouse input is not needed - if( in_smart_grab->integer ) { + if (in_smart_grab->integer) { // playing a demo (and not using freelook) - if( cls.demo.playback && !Key_IsDown( K_SHIFT ) ) + if (cls.demo.playback && !Key_IsDown(K_SHIFT)) return IN_HIDE; // spectator mode - if( cl.frame.ps.pmove.pm_type == PM_FREEZE ) + if (cl.frame.ps.pmove.pm_type == PM_FREEZE) return IN_HIDE; } @@ -132,17 +133,18 @@ static inline grab_t get_grab_mode( void ) { IN_Activate ============ */ -void IN_Activate( void ) { +void IN_Activate(void) +{ grab_t grab; - if( !input.initialized ) { + if (!input.initialized) { return; } grab = get_grab_mode(); // set up cursor hiding policy - if( grab == IN_HIDE && in_hide_delay->value > 0.1f ) { + if (grab == IN_HIDE && in_hide_delay->value > 0.1f) { input.hide_cursor = HIDE_SHOW; input.last_motion = com_localTime; input.hide_delay = in_hide_delay->value * 1000; @@ -151,11 +153,11 @@ void IN_Activate( void ) { input.hide_cursor = HIDE_NOT; input.last_motion = com_localTime; input.hide_delay = 0; - if( grab == IN_HIDE ) + if (grab == IN_HIDE) grab = IN_SHOW; } - input.api.Grab( grab ); + input.api.Grab(grab); } /* @@ -163,7 +165,8 @@ void IN_Activate( void ) { IN_Restart_f ============ */ -static void IN_Restart_f( void ) { +static void IN_Restart_f(void) +{ IN_Shutdown(); IN_Init(); } @@ -173,21 +176,21 @@ static void IN_Restart_f( void ) { IN_Frame ============ */ -void IN_Frame( void ) { - if( input.modified ) { +void IN_Frame(void) +{ + if (input.modified) { IN_Restart_f(); input.modified = qfalse; return; } - if( input.initialized ) { - if( input.api.GetEvents ) { + if (input.initialized) { + if (input.api.GetEvents) { input.api.GetEvents(); } - if( input.hide_cursor == HIDE_SHOW && - com_localTime - input.last_motion > input.hide_delay ) - { - input.api.Grab( IN_HIDE ); + if (input.hide_cursor == HIDE_SHOW && + com_localTime - input.last_motion > input.hide_delay) { + input.api.Grab(IN_HIDE); input.hide_cursor = HIDE_HIDE; } } @@ -202,26 +205,27 @@ void IN_Frame( void ) { IN_MouseEvent ================ */ -void IN_MouseEvent( int x, int y ) { +void IN_MouseEvent(int x, int y) +{ input.last_motion = com_localTime; - if( input.hide_cursor == HIDE_HIDE ) { - input.api.Grab( IN_SHOW ); + if (input.hide_cursor == HIDE_HIDE) { + input.api.Grab(IN_SHOW); input.hide_cursor = HIDE_SHOW; } - if( x < 0 && y < 0 ) { + if (x < 0 && y < 0) { // cursor is over non-client area - if( input.hide_cursor == HIDE_SHOW ) + if (input.hide_cursor == HIDE_SHOW) input.hide_cursor = HIDE_SHOW_NC; return; } // cursor is over client area - if( input.hide_cursor == HIDE_SHOW_NC ) + if (input.hide_cursor == HIDE_SHOW_NC) input.hide_cursor = HIDE_SHOW; #if USE_UI - UI_MouseEvent( x, y ); + UI_MouseEvent(x, y); #endif } @@ -230,9 +234,10 @@ void IN_MouseEvent( int x, int y ) { IN_WarpMouse ================ */ -void IN_WarpMouse( int x, int y ) { - if( input.initialized && input.api.Warp ) { - input.api.Warp( x, y ); +void IN_WarpMouse(int x, int y) +{ + if (input.initialized && input.api.Warp) { + input.api.Warp(x, y); } } @@ -241,24 +246,27 @@ void IN_WarpMouse( int x, int y ) { IN_Shutdown ============ */ -void IN_Shutdown( void ) { - if( input.initialized ) { +void IN_Shutdown(void) +{ + if (input.initialized) { #if USE_DINPUT in_direct->changed = NULL; #endif input.api.Shutdown(); - memset( &input, 0, sizeof( input ) ); + memset(&input, 0, sizeof(input)); } #if USE_LIRC Lirc_Shutdown(); #endif } -static void in_changed_hard( cvar_t *self ) { +static void in_changed_hard(cvar_t *self) +{ input.modified = qtrue; } -static void in_changed_soft( cvar_t *self ) { +static void in_changed_soft(cvar_t *self) +{ IN_Activate(); } @@ -267,36 +275,37 @@ static void in_changed_soft( cvar_t *self ) { IN_Init ============ */ -void IN_Init( void ) { +void IN_Init(void) +{ qboolean ret = qfalse; #if USE_LIRC Lirc_Init(); #endif - in_enable = Cvar_Get( "in_enable", "1", 0 ); + in_enable = Cvar_Get("in_enable", "1", 0); in_enable->changed = in_changed_hard; - if( !in_enable->integer ) { - Com_Printf( "Mouse input disabled.\n" ); + if (!in_enable->integer) { + Com_Printf("Mouse input disabled.\n"); return; } #if USE_DINPUT - in_direct = Cvar_Get( "in_direct", "1", 0 ); - if( in_direct->integer ) { - DI_FillAPI( &input.api ); + in_direct = Cvar_Get("in_direct", "1", 0); + if (in_direct->integer) { + DI_FillAPI(&input.api); ret = input.api.Init(); - if( !ret ) { - Cvar_Set( "in_direct", "0" ); + if (!ret) { + Cvar_Set("in_direct", "0"); } } #endif - if( !ret ) { - VID_FillInputAPI( &input.api ); + if (!ret) { + VID_FillInputAPI(&input.api); ret = input.api.Init(); - if( !ret ) { - Cvar_Set( "in_enable", "0" ); + if (!ret) { + Cvar_Set("in_enable", "0"); return; } } @@ -305,10 +314,10 @@ void IN_Init( void ) { in_direct->changed = in_changed_hard; #endif - in_smart_grab = Cvar_Get( "in_smart_grab", "0", 0 ); + in_smart_grab = Cvar_Get("in_smart_grab", "0", 0); in_smart_grab->changed = in_changed_soft; - in_hide_delay = Cvar_Get( "in_hide_delay", "0", 0 ); + in_hide_delay = Cvar_Get("in_hide_delay", "0", 0); in_hide_delay->changed = in_changed_soft; input.initialized = qtrue; @@ -359,10 +368,11 @@ static kbutton_t in_up, in_down; static int in_impulse; static qboolean in_mlooking; -static void KeyDown (kbutton_t *b) { +static void KeyDown(kbutton_t *b) +{ int k; char *c; - + c = Cmd_Argv(1); if (c[0]) k = atoi(c); @@ -371,16 +381,16 @@ static void KeyDown (kbutton_t *b) { if (k == b->down[0] || k == b->down[1]) return; // repeating key - + if (!b->down[0]) b->down[0] = k; else if (!b->down[1]) b->down[1] = k; else { - Com_WPrintf ("Three keys down for a button!\n"); + Com_WPrintf("Three keys down for a button!\n"); return; } - + if (b->state & 1) return; // still down @@ -394,7 +404,8 @@ static void KeyDown (kbutton_t *b) { b->state |= 1 + 2; // down + impulse down } -static void KeyUp (kbutton_t *b) { +static void KeyUp(kbutton_t *b) +{ int k; char *c; unsigned uptime; @@ -424,80 +435,97 @@ static void KeyUp (kbutton_t *b) { // save timestamp c = Cmd_Argv(2); uptime = atoi(c); - if( !uptime ) { + if (!uptime) { b->msec += 10; - } else if( uptime > b->downtime ) { + } else if (uptime > b->downtime) { b->msec += uptime - b->downtime; } b->state &= ~1; // now up } -static void KeyClear( kbutton_t *b ) { +static void KeyClear(kbutton_t *b) +{ b->msec = 0; b->state &= ~2; // clear impulses - if( b->state & 1 ) { + if (b->state & 1) { b->downtime = com_eventTime; // still down } } -static void IN_KLookDown( void ) { KeyDown( &in_klook ); } -static void IN_KLookUp( void ) { KeyUp( &in_klook ); } -static void IN_UpDown( void ) { KeyDown( &in_up ); } -static void IN_UpUp( void ) { KeyUp( &in_up ); } -static void IN_DownDown( void ) { KeyDown( &in_down ); } -static void IN_DownUp( void ) { KeyUp( &in_down ); } -static void IN_LeftDown( void ) { KeyDown( &in_left ); } -static void IN_LeftUp( void ) { KeyUp( &in_left ); } -static void IN_RightDown( void ) { KeyDown( &in_right ); } -static void IN_RightUp( void ) { KeyUp( &in_right ); } -static void IN_ForwardDown( void ) { KeyDown( &in_forward ); } -static void IN_ForwardUp( void ) { KeyUp( &in_forward ); } -static void IN_BackDown( void ) { KeyDown( &in_back ); } -static void IN_BackUp( void ) { KeyUp( &in_back ); } -static void IN_LookupDown( void ) { KeyDown( &in_lookup ); } -static void IN_LookupUp( void ) { KeyUp( &in_lookup ); } -static void IN_LookdownDown( void ) { KeyDown( &in_lookdown ); } -static void IN_LookdownUp( void ) { KeyUp( &in_lookdown ); } -static void IN_MoveleftDown( void ) { KeyDown( &in_moveleft ); } -static void IN_MoveleftUp( void ) { KeyUp( &in_moveleft ); } -static void IN_MoverightDown( void ) { KeyDown( &in_moveright ); } -static void IN_MoverightUp( void ) { KeyUp( &in_moveright ); } -static void IN_SpeedDown( void ) { KeyDown( &in_speed ); } -static void IN_SpeedUp( void ) { KeyUp( &in_speed ); } -static void IN_StrafeDown( void ) { KeyDown( &in_strafe ); } -static void IN_StrafeUp( void ) { KeyUp( &in_strafe ); } -static void IN_AttackDown( void ) { - KeyDown( &in_attack ); - if( cl_instantpacket->integer ) { +static void IN_KLookDown(void) { KeyDown(&in_klook); } +static void IN_KLookUp(void) { KeyUp(&in_klook); } +static void IN_UpDown(void) { KeyDown(&in_up); } +static void IN_UpUp(void) { KeyUp(&in_up); } +static void IN_DownDown(void) { KeyDown(&in_down); } +static void IN_DownUp(void) { KeyUp(&in_down); } +static void IN_LeftDown(void) { KeyDown(&in_left); } +static void IN_LeftUp(void) { KeyUp(&in_left); } +static void IN_RightDown(void) { KeyDown(&in_right); } +static void IN_RightUp(void) { KeyUp(&in_right); } +static void IN_ForwardDown(void) { KeyDown(&in_forward); } +static void IN_ForwardUp(void) { KeyUp(&in_forward); } +static void IN_BackDown(void) { KeyDown(&in_back); } +static void IN_BackUp(void) { KeyUp(&in_back); } +static void IN_LookupDown(void) { KeyDown(&in_lookup); } +static void IN_LookupUp(void) { KeyUp(&in_lookup); } +static void IN_LookdownDown(void) { KeyDown(&in_lookdown); } +static void IN_LookdownUp(void) { KeyUp(&in_lookdown); } +static void IN_MoveleftDown(void) { KeyDown(&in_moveleft); } +static void IN_MoveleftUp(void) { KeyUp(&in_moveleft); } +static void IN_MoverightDown(void) { KeyDown(&in_moveright); } +static void IN_MoverightUp(void) { KeyUp(&in_moveright); } +static void IN_SpeedDown(void) { KeyDown(&in_speed); } +static void IN_SpeedUp(void) { KeyUp(&in_speed); } +static void IN_StrafeDown(void) { KeyDown(&in_strafe); } +static void IN_StrafeUp(void) { KeyUp(&in_strafe); } + +static void IN_AttackDown(void) +{ + KeyDown(&in_attack); + if (cl_instantpacket->integer) { cl.sendPacketNow = qtrue; } } -static void IN_AttackUp( void ) { KeyUp( &in_attack ); } -static void IN_UseDown ( void ) { - KeyDown( &in_use ); - if( cl_instantpacket->integer ) { + +static void IN_AttackUp(void) +{ + KeyUp(&in_attack); +} + +static void IN_UseDown(void) +{ + KeyDown(&in_use); + if (cl_instantpacket->integer) { cl.sendPacketNow = qtrue; } } -static void IN_UseUp ( void ) { KeyUp( &in_use ); } -static void IN_Impulse ( void ) { - in_impulse = atoi( Cmd_Argv( 1 ) ); +static void IN_UseUp(void) +{ + KeyUp(&in_use); } -static void IN_CenterView( void ) { - cl.viewangles[PITCH] = -SHORT2ANGLE( cl.frame.ps.pmove.delta_angles[PITCH] ); +static void IN_Impulse(void) +{ + in_impulse = atoi(Cmd_Argv(1)); } -static void IN_MLookDown( void ) { +static void IN_CenterView(void) +{ + cl.viewangles[PITCH] = -SHORT2ANGLE(cl.frame.ps.pmove.delta_angles[PITCH]); +} + +static void IN_MLookDown(void) +{ in_mlooking = qtrue; } -static void IN_MLookUp( void ) { +static void IN_MLookUp(void) +{ in_mlooking = qfalse; - if( !freelook->integer && lookspring->integer ) + if (!freelook->integer && lookspring->integer) IN_CenterView(); } @@ -508,24 +536,25 @@ CL_KeyState Returns the fraction of the frame that the key was down =============== */ -static float CL_KeyState( kbutton_t *key ) { +static float CL_KeyState(kbutton_t *key) +{ unsigned msec = key->msec; float val; - if( key->state & 1 ) { + if (key->state & 1) { // still down - if( com_eventTime > key->downtime ) { + if (com_eventTime > key->downtime) { msec += com_eventTime - key->downtime; } } - if( !cl.cmd.msec ) { + if (!cl.cmd.msec) { return 0; } - val = ( float )msec / cl.cmd.msec; + val = (float)msec / cl.cmd.msec; - return clamp( val, 0, 1 ); + return clamp(val, 0, 1); } //========================================================================== @@ -535,25 +564,26 @@ static float CL_KeyState( kbutton_t *key ) { CL_MouseMove ================ */ -static void CL_MouseMove( void ) { +static void CL_MouseMove(void) +{ static int old_dx, old_dy; int dx, dy; float mx, my; float speed; - if( !input.initialized ) { + if (!input.initialized) { return; } - if( cls.key_dest & (KEY_MENU|KEY_CONSOLE) ) { + if (cls.key_dest & (KEY_MENU | KEY_CONSOLE)) { return; } - if( !input.api.GetMotion( &dx, &dy ) ) { + if (!input.api.GetMotion(&dx, &dy)) { return; } - if( m_filter->integer ) { - mx = ( dx + old_dx ) * 0.5f; - my = ( dy + old_dy ) * 0.5f; + if (m_filter->integer) { + mx = (dx + old_dx) * 0.5f; + my = (dy + old_dy) * 0.5f; } else { mx = dx; my = dy; @@ -562,31 +592,31 @@ static void CL_MouseMove( void ) { old_dx = dx; old_dy = dy; - if( !mx && !my ) { + if (!mx && !my) { return; } - Cvar_ClampValue( m_accel, 0, 1 ); + Cvar_ClampValue(m_accel, 0, 1); - speed = sqrt( mx * mx + my * my ); + speed = sqrt(mx * mx + my * my); speed = sensitivity->value + speed * m_accel->value; mx *= speed; my *= speed; - if( m_autosens->integer ) { + if (m_autosens->integer) { mx *= cl.fov_x / 90.0f; - my *= V_CalcFov( cl.fov_x, 4, 3 ) / 73.739795291688f; + my *= V_CalcFov(cl.fov_x, 4, 3) / 73.739795291688f; } // add mouse X/Y movement - if( ( in_strafe.state & 1 ) || ( lookstrafe->integer && !in_mlooking ) ) { + if ((in_strafe.state & 1) || (lookstrafe->integer && !in_mlooking)) { cl.mousemove[1] += m_side->value * mx; } else { cl.viewangles[YAW] -= m_yaw->value * mx; } - if( ( in_mlooking || freelook->integer ) && !( in_strafe.state & 1 ) ) { + if ((in_mlooking || freelook->integer) && !(in_strafe.state & 1)) { cl.viewangles[PITCH] += m_pitch->value * my; } else { cl.mousemove[0] -= m_forward->value * my; @@ -601,25 +631,26 @@ CL_AdjustAngles Moves the local angle positions ================ */ -static void CL_AdjustAngles( int msec ) { +static void CL_AdjustAngles(int msec) +{ float speed; - - if( in_speed.state & 1 ) + + if (in_speed.state & 1) speed = msec * cl_anglespeedkey->value * 0.001f; else speed = msec * 0.001f; - if( !( in_strafe.state & 1 ) ) { - cl.viewangles[YAW] -= speed*cl_yawspeed->value*CL_KeyState(&in_right); - cl.viewangles[YAW] += speed*cl_yawspeed->value*CL_KeyState(&in_left); + if (!(in_strafe.state & 1)) { + cl.viewangles[YAW] -= speed * cl_yawspeed->value * CL_KeyState(&in_right); + cl.viewangles[YAW] += speed * cl_yawspeed->value * CL_KeyState(&in_left); } - if( in_klook.state & 1 ) { - cl.viewangles[PITCH] -= speed*cl_pitchspeed->value*CL_KeyState(&in_forward); - cl.viewangles[PITCH] += speed*cl_pitchspeed->value*CL_KeyState(&in_back); + if (in_klook.state & 1) { + cl.viewangles[PITCH] -= speed * cl_pitchspeed->value * CL_KeyState(&in_forward); + cl.viewangles[PITCH] += speed * cl_pitchspeed->value * CL_KeyState(&in_back); } - - cl.viewangles[PITCH] -= speed*cl_pitchspeed->value*CL_KeyState(&in_lookup); - cl.viewangles[PITCH] += speed*cl_pitchspeed->value*CL_KeyState(&in_lookdown); + + cl.viewangles[PITCH] -= speed * cl_pitchspeed->value * CL_KeyState(&in_lookup); + cl.viewangles[PITCH] += speed * cl_pitchspeed->value * CL_KeyState(&in_lookdown); } /* @@ -629,41 +660,44 @@ CL_BaseMove Build the intended movement vector ================ */ -static void CL_BaseMove( vec3_t move ) { - if( in_strafe.state & 1 ) { - move[1] += cl_sidespeed->value * CL_KeyState( &in_right ); - move[1] -= cl_sidespeed->value * CL_KeyState( &in_left ); +static void CL_BaseMove(vec3_t move) +{ + if (in_strafe.state & 1) { + move[1] += cl_sidespeed->value * CL_KeyState(&in_right); + move[1] -= cl_sidespeed->value * CL_KeyState(&in_left); } - move[1] += cl_sidespeed->value * CL_KeyState( &in_moveright ); - move[1] -= cl_sidespeed->value * CL_KeyState( &in_moveleft ); + move[1] += cl_sidespeed->value * CL_KeyState(&in_moveright); + move[1] -= cl_sidespeed->value * CL_KeyState(&in_moveleft); - move[2] += cl_upspeed->value * CL_KeyState( &in_up ); - move[2] -= cl_upspeed->value * CL_KeyState( &in_down ); + move[2] += cl_upspeed->value * CL_KeyState(&in_up); + move[2] -= cl_upspeed->value * CL_KeyState(&in_down); - if( !( in_klook.state & 1 ) ) { - move[0] += cl_forwardspeed->value * CL_KeyState( &in_forward ); - move[0] -= cl_forwardspeed->value * CL_KeyState( &in_back ); + if (!(in_klook.state & 1)) { + move[0] += cl_forwardspeed->value * CL_KeyState(&in_forward); + move[0] -= cl_forwardspeed->value * CL_KeyState(&in_back); } // adjust for speed key / running - if( ( in_speed.state & 1 ) ^ cl_run->integer ) { - VectorScale( move, 2, move ); + if ((in_speed.state & 1) ^ cl_run->integer) { + VectorScale(move, 2, move); } } -static void CL_ClampSpeed( vec3_t move ) { +static void CL_ClampSpeed(vec3_t move) +{ float speed = cl.pmp.maxspeed; - clamp( move[0], -speed, speed ); - clamp( move[1], -speed, speed ); - clamp( move[2], -speed, speed ); + clamp(move[0], -speed, speed); + clamp(move[1], -speed, speed); + clamp(move[2], -speed, speed); } -static void CL_ClampPitch( void ) { +static void CL_ClampPitch(void) +{ float pitch; - pitch = SHORT2ANGLE( cl.frame.ps.pmove.delta_angles[PITCH] ); + pitch = SHORT2ANGLE(cl.frame.ps.pmove.delta_angles[PITCH]); if (pitch > 180) pitch -= 360; @@ -686,10 +720,11 @@ Updates msec, angles and builds interpolated movement vector for local predictio Doesn't touch command forward/side/upmove, these are filled by CL_FinalizeCmd. ================= */ -void CL_UpdateCmd( int msec ) { - VectorClear( cl.localmove ); +void CL_UpdateCmd(int msec) +{ + VectorClear(cl.localmove); - if( sv_paused->integer ) { + if (sv_paused->integer) { return; } @@ -697,10 +732,10 @@ void CL_UpdateCmd( int msec ) { cl.cmd.msec += msec; // adjust viewangles - CL_AdjustAngles( msec ); + CL_AdjustAngles(msec); // get basic movement from keyboard - CL_BaseMove( cl.localmove ); + CL_BaseMove(cl.localmove); // allow mice to add to the move CL_MouseMove(); @@ -710,13 +745,13 @@ void CL_UpdateCmd( int msec ) { cl.localmove[1] += cl.mousemove[1]; // clamp to server defined max speed - CL_ClampSpeed( cl.localmove ); + CL_ClampSpeed(cl.localmove); CL_ClampPitch(); - - cl.cmd.angles[0] = ANGLE2SHORT( cl.viewangles[0] ); - cl.cmd.angles[1] = ANGLE2SHORT( cl.viewangles[1] ); - cl.cmd.angles[2] = ANGLE2SHORT( cl.viewangles[2] ); + + cl.cmd.angles[0] = ANGLE2SHORT(cl.viewangles[0]); + cl.cmd.angles[1] = ANGLE2SHORT(cl.viewangles[1]); + cl.cmd.angles[2] = ANGLE2SHORT(cl.viewangles[2]); } @@ -725,75 +760,76 @@ void CL_UpdateCmd( int msec ) { CL_RegisterInput ============ */ -void CL_RegisterInput( void ) { - Cmd_AddCommand ("centerview",IN_CenterView); - - Cmd_AddCommand ("+moveup",IN_UpDown); - Cmd_AddCommand ("-moveup",IN_UpUp); - Cmd_AddCommand ("+movedown",IN_DownDown); - Cmd_AddCommand ("-movedown",IN_DownUp); - Cmd_AddCommand ("+left",IN_LeftDown); - Cmd_AddCommand ("-left",IN_LeftUp); - Cmd_AddCommand ("+right",IN_RightDown); - Cmd_AddCommand ("-right",IN_RightUp); - Cmd_AddCommand ("+forward",IN_ForwardDown); - Cmd_AddCommand ("-forward",IN_ForwardUp); - Cmd_AddCommand ("+back",IN_BackDown); - Cmd_AddCommand ("-back",IN_BackUp); - Cmd_AddCommand ("+lookup", IN_LookupDown); - Cmd_AddCommand ("-lookup", IN_LookupUp); - Cmd_AddCommand ("+lookdown", IN_LookdownDown); - Cmd_AddCommand ("-lookdown", IN_LookdownUp); - Cmd_AddCommand ("+strafe", IN_StrafeDown); - Cmd_AddCommand ("-strafe", IN_StrafeUp); - Cmd_AddCommand ("+moveleft", IN_MoveleftDown); - Cmd_AddCommand ("-moveleft", IN_MoveleftUp); - Cmd_AddCommand ("+moveright", IN_MoverightDown); - Cmd_AddCommand ("-moveright", IN_MoverightUp); - Cmd_AddCommand ("+speed", IN_SpeedDown); - Cmd_AddCommand ("-speed", IN_SpeedUp); - Cmd_AddCommand ("+attack", IN_AttackDown); - Cmd_AddCommand ("-attack", IN_AttackUp); - Cmd_AddCommand ("+use", IN_UseDown); - Cmd_AddCommand ("-use", IN_UseUp); - Cmd_AddCommand ("impulse", IN_Impulse); - Cmd_AddCommand ("+klook", IN_KLookDown); - Cmd_AddCommand ("-klook", IN_KLookUp); - Cmd_AddCommand( "+mlook", IN_MLookDown ); - Cmd_AddCommand( "-mlook", IN_MLookUp ); - - Cmd_AddCommand( "in_restart", IN_Restart_f ); - - cl_nodelta = Cvar_Get ("cl_nodelta", "0", 0); - cl_maxpackets = Cvar_Get( "cl_maxpackets", "30", 0 ); - cl_fuzzhack = Cvar_Get( "cl_fuzzhack", "0", 0 ); - cl_packetdup = Cvar_Get( "cl_packetdup", "1", 0 ); +void CL_RegisterInput(void) +{ + Cmd_AddCommand("centerview", IN_CenterView); + + Cmd_AddCommand("+moveup", IN_UpDown); + Cmd_AddCommand("-moveup", IN_UpUp); + Cmd_AddCommand("+movedown", IN_DownDown); + Cmd_AddCommand("-movedown", IN_DownUp); + Cmd_AddCommand("+left", IN_LeftDown); + Cmd_AddCommand("-left", IN_LeftUp); + Cmd_AddCommand("+right", IN_RightDown); + Cmd_AddCommand("-right", IN_RightUp); + Cmd_AddCommand("+forward", IN_ForwardDown); + Cmd_AddCommand("-forward", IN_ForwardUp); + Cmd_AddCommand("+back", IN_BackDown); + Cmd_AddCommand("-back", IN_BackUp); + Cmd_AddCommand("+lookup", IN_LookupDown); + Cmd_AddCommand("-lookup", IN_LookupUp); + Cmd_AddCommand("+lookdown", IN_LookdownDown); + Cmd_AddCommand("-lookdown", IN_LookdownUp); + Cmd_AddCommand("+strafe", IN_StrafeDown); + Cmd_AddCommand("-strafe", IN_StrafeUp); + Cmd_AddCommand("+moveleft", IN_MoveleftDown); + Cmd_AddCommand("-moveleft", IN_MoveleftUp); + Cmd_AddCommand("+moveright", IN_MoverightDown); + Cmd_AddCommand("-moveright", IN_MoverightUp); + Cmd_AddCommand("+speed", IN_SpeedDown); + Cmd_AddCommand("-speed", IN_SpeedUp); + Cmd_AddCommand("+attack", IN_AttackDown); + Cmd_AddCommand("-attack", IN_AttackUp); + Cmd_AddCommand("+use", IN_UseDown); + Cmd_AddCommand("-use", IN_UseUp); + Cmd_AddCommand("impulse", IN_Impulse); + Cmd_AddCommand("+klook", IN_KLookDown); + Cmd_AddCommand("-klook", IN_KLookUp); + Cmd_AddCommand("+mlook", IN_MLookDown); + Cmd_AddCommand("-mlook", IN_MLookUp); + + Cmd_AddCommand("in_restart", IN_Restart_f); + + cl_nodelta = Cvar_Get("cl_nodelta", "0", 0); + cl_maxpackets = Cvar_Get("cl_maxpackets", "30", 0); + cl_fuzzhack = Cvar_Get("cl_fuzzhack", "0", 0); + cl_packetdup = Cvar_Get("cl_packetdup", "1", 0); #ifdef _DEBUG - cl_showpackets = Cvar_Get( "cl_showpackets", "0", 0 ); + cl_showpackets = Cvar_Get("cl_showpackets", "0", 0); #endif - cl_instantpacket = Cvar_Get( "cl_instantpacket", "1", 0 ); - cl_batchcmds = Cvar_Get( "cl_batchcmds", "1", 0 ); - - cl_upspeed = Cvar_Get ( "cl_upspeed", "200", 0 ); - cl_forwardspeed = Cvar_Get ( "cl_forwardspeed", "200", 0 ); - cl_sidespeed = Cvar_Get ( "cl_sidespeed", "200", 0 ); - cl_yawspeed = Cvar_Get ( "cl_yawspeed", "140", 0 ); - cl_pitchspeed = Cvar_Get ( "cl_pitchspeed", "150", CVAR_CHEAT ); - cl_anglespeedkey = Cvar_Get ( "cl_anglespeedkey", "1.5", CVAR_CHEAT ); - cl_run = Cvar_Get( "cl_run", "1", CVAR_ARCHIVE ); - - freelook = Cvar_Get( "freelook", "1", CVAR_ARCHIVE ); - lookspring = Cvar_Get ( "lookspring", "0", CVAR_ARCHIVE ); - lookstrafe = Cvar_Get ( "lookstrafe", "0", CVAR_ARCHIVE ); - sensitivity = Cvar_Get ( "sensitivity", "3", CVAR_ARCHIVE ); - - m_pitch = Cvar_Get ( "m_pitch", "0.022", CVAR_ARCHIVE ); - m_yaw = Cvar_Get ( "m_yaw", "0.022", 0 ); - m_forward = Cvar_Get ( "m_forward", "1", 0 ); - m_side = Cvar_Get ( "m_side", "1", 0 ); - m_filter = Cvar_Get( "m_filter", "0", 0 ); - m_accel = Cvar_Get( "m_accel", "0", 0 ); - m_autosens = Cvar_Get( "m_autosens", "0", 0 ); + cl_instantpacket = Cvar_Get("cl_instantpacket", "1", 0); + cl_batchcmds = Cvar_Get("cl_batchcmds", "1", 0); + + cl_upspeed = Cvar_Get("cl_upspeed", "200", 0); + cl_forwardspeed = Cvar_Get("cl_forwardspeed", "200", 0); + cl_sidespeed = Cvar_Get("cl_sidespeed", "200", 0); + cl_yawspeed = Cvar_Get("cl_yawspeed", "140", 0); + cl_pitchspeed = Cvar_Get("cl_pitchspeed", "150", CVAR_CHEAT); + cl_anglespeedkey = Cvar_Get("cl_anglespeedkey", "1.5", CVAR_CHEAT); + cl_run = Cvar_Get("cl_run", "1", CVAR_ARCHIVE); + + freelook = Cvar_Get("freelook", "1", CVAR_ARCHIVE); + lookspring = Cvar_Get("lookspring", "0", CVAR_ARCHIVE); + lookstrafe = Cvar_Get("lookstrafe", "0", CVAR_ARCHIVE); + sensitivity = Cvar_Get("sensitivity", "3", CVAR_ARCHIVE); + + m_pitch = Cvar_Get("m_pitch", "0.022", CVAR_ARCHIVE); + m_yaw = Cvar_Get("m_yaw", "0.022", 0); + m_forward = Cvar_Get("m_forward", "1", 0); + m_side = Cvar_Get("m_side", "1", 0); + m_filter = Cvar_Get("m_filter", "0", 0); + m_accel = Cvar_Get("m_accel", "0", 0); + m_autosens = Cvar_Get("m_autosens", "0", 0); } /* @@ -804,56 +840,57 @@ Builds the actual movement vector for sending to server. Assumes that msec and angles are already set for this frame by CL_UpdateCmd. ================= */ -void CL_FinalizeCmd( void ) { +void CL_FinalizeCmd(void) +{ vec3_t move; // command buffer ticks in sync with cl_maxfps - if( cmd_buffer.waitCount > 0 ) { + if (cmd_buffer.waitCount > 0) { cmd_buffer.waitCount--; } - if( cl_cmdbuf.waitCount > 0 ) { + if (cl_cmdbuf.waitCount > 0) { cl_cmdbuf.waitCount--; } - if( cls.state < ca_active ) { + if (cls.state < ca_active) { return; // not talking to a server } - if( sv_paused->integer ) { + if (sv_paused->integer) { return; } // // figure button bits -// - if( in_attack.state & 3 ) +// + if (in_attack.state & 3) cl.cmd.buttons |= BUTTON_ATTACK; - if( in_use.state & 3 ) + if (in_use.state & 3) cl.cmd.buttons |= BUTTON_USE; in_attack.state &= ~2; in_use.state &= ~2; - if( cls.key_dest == KEY_GAME && Key_AnyKeyDown() ) { + if (cls.key_dest == KEY_GAME && Key_AnyKeyDown()) { cl.cmd.buttons |= BUTTON_ANY; } - if( cl.cmd.msec > 250 ) { + if (cl.cmd.msec > 250) { cl.cmd.msec = 100; // time was unreasonable } // rebuild the movement vector - VectorClear( move ); + VectorClear(move); // get basic movement from keyboard - CL_BaseMove( move ); + CL_BaseMove(move); // add mouse forward/side movement move[0] += cl.mousemove[0]; move[1] += cl.mousemove[1]; // clamp to server defined max speed - CL_ClampSpeed( move ); + CL_ClampSpeed(move); // store the movement vector cl.cmd.forwardmove = move[0]; @@ -864,20 +901,20 @@ void CL_FinalizeCmd( void ) { cl.mousemove[0] = 0; cl.mousemove[1] = 0; - KeyClear( &in_right ); - KeyClear( &in_left ); + KeyClear(&in_right); + KeyClear(&in_left); - KeyClear( &in_moveright ); - KeyClear( &in_moveleft ); + KeyClear(&in_moveright); + KeyClear(&in_moveleft); - KeyClear( &in_up ); - KeyClear( &in_down ); + KeyClear(&in_up); + KeyClear(&in_down); - KeyClear( &in_forward ); - KeyClear( &in_back ); + KeyClear(&in_forward); + KeyClear(&in_back); - KeyClear( &in_lookup ); - KeyClear( &in_lookdown ); + KeyClear(&in_lookup); + KeyClear(&in_lookdown); cl.cmd.impulse = in_impulse; in_impulse = 0; @@ -887,43 +924,45 @@ void CL_FinalizeCmd( void ) { cl.cmds[cl.cmdNumber & CMD_MASK] = cl.cmd; // clear pending cmd - memset( &cl.cmd, 0, sizeof( cl.cmd ) ); + memset(&cl.cmd, 0, sizeof(cl.cmd)); } -static inline qboolean ready_to_send( void ) { +static inline qboolean ready_to_send(void) +{ unsigned msec; - if( cl.sendPacketNow ) { + if (cl.sendPacketNow) { return qtrue; } - if( cls.netchan->message.cursize || cls.netchan->reliable_ack_pending ) { + if (cls.netchan->message.cursize || cls.netchan->reliable_ack_pending) { return qtrue; } - if( !cl_maxpackets->integer ) { + if (!cl_maxpackets->integer) { return qtrue; } - if( cl_maxpackets->integer < 10 ) { - Cvar_Set( "cl_maxpackets", "10" ); + if (cl_maxpackets->integer < 10) { + Cvar_Set("cl_maxpackets", "10"); } msec = 1000 / cl_maxpackets->integer; - if( msec ) { - msec = 100 / ( 100 / msec ); + if (msec) { + msec = 100 / (100 / msec); } - if( cls.realtime - cl.lastTransmitTime < msec ) { + if (cls.realtime - cl.lastTransmitTime < msec) { return qfalse; } return qtrue; } -static inline qboolean ready_to_send_hacked( void ) { - if( !cl_fuzzhack->integer ) { +static inline qboolean ready_to_send_hacked(void) +{ + if (!cl_fuzzhack->integer) { return qtrue; // packet drop hack disabled } - if( cl.cmdNumber - cl.lastTransmitCmdNumberReal > 2 ) { + if (cl.cmdNumber - cl.lastTransmitCmdNumberReal > 2) { return qtrue; // can't drop more than 2 cmds } @@ -935,7 +974,8 @@ static inline qboolean ready_to_send_hacked( void ) { CL_SendDefaultCmd ================= */ -static void CL_SendDefaultCmd( void ) { +static void CL_SendDefaultCmd(void) +{ size_t cursize, checksumIndex; usercmd_t *cmd, *oldcmd; client_history_t *history; @@ -949,7 +989,7 @@ static void CL_SendDefaultCmd( void ) { cl.lastTransmitCmdNumber = cl.cmdNumber; // see if we are ready to send this packet - if( !ready_to_send_hacked() ) { + if (!ready_to_send_hacked()) { cls.netchan->outgoing_sequence++; // just drop the packet return; } @@ -958,45 +998,45 @@ static void CL_SendDefaultCmd( void ) { cl.lastTransmitCmdNumberReal = cl.cmdNumber; // begin a client move command - MSG_WriteByte( clc_move ); + MSG_WriteByte(clc_move); // save the position for a checksum byte checksumIndex = 0; - if( cls.serverProtocol <= PROTOCOL_VERSION_DEFAULT ) { + if (cls.serverProtocol <= PROTOCOL_VERSION_DEFAULT) { checksumIndex = msg_write.cursize; - SZ_GetSpace( &msg_write, 1 ); + SZ_GetSpace(&msg_write, 1); } // let the server know what the last frame we // got was, so the next message can be delta compressed - if( cl_nodelta->integer || !cl.frame.valid /*|| cls.demowaiting*/ ) { - MSG_WriteLong( -1 ); // no compression + if (cl_nodelta->integer || !cl.frame.valid /*|| cls.demowaiting*/) { + MSG_WriteLong(-1); // no compression } else { - MSG_WriteLong( cl.frame.number ); + MSG_WriteLong(cl.frame.number); } // send this and the previous cmds in the message, so // if the last packet was dropped, it can be recovered - cmd = &cl.cmds[( cl.cmdNumber - 2 ) & CMD_MASK]; - MSG_WriteDeltaUsercmd( NULL, cmd, cls.protocolVersion ); - MSG_WriteByte( cl.lightlevel ); + cmd = &cl.cmds[(cl.cmdNumber - 2) & CMD_MASK]; + MSG_WriteDeltaUsercmd(NULL, cmd, cls.protocolVersion); + MSG_WriteByte(cl.lightlevel); oldcmd = cmd; - cmd = &cl.cmds[( cl.cmdNumber - 1 ) & CMD_MASK]; - MSG_WriteDeltaUsercmd( oldcmd, cmd, cls.protocolVersion ); - MSG_WriteByte( cl.lightlevel ); + cmd = &cl.cmds[(cl.cmdNumber - 1) & CMD_MASK]; + MSG_WriteDeltaUsercmd(oldcmd, cmd, cls.protocolVersion); + MSG_WriteByte(cl.lightlevel); oldcmd = cmd; cmd = &cl.cmds[cl.cmdNumber & CMD_MASK]; - MSG_WriteDeltaUsercmd( oldcmd, cmd, cls.protocolVersion ); - MSG_WriteByte( cl.lightlevel ); + MSG_WriteDeltaUsercmd(oldcmd, cmd, cls.protocolVersion); + MSG_WriteByte(cl.lightlevel); - if( cls.serverProtocol <= PROTOCOL_VERSION_DEFAULT ) { + if (cls.serverProtocol <= PROTOCOL_VERSION_DEFAULT) { // calculate a checksum over the move commands msg_write.data[checksumIndex] = COM_BlockSequenceCRCByte( - msg_write.data + checksumIndex + 1, - msg_write.cursize - checksumIndex - 1, - cls.netchan->outgoing_sequence ); + msg_write.data + checksumIndex + 1, + msg_write.cursize - checksumIndex - 1, + cls.netchan->outgoing_sequence); } P_FRAMES++; @@ -1004,14 +1044,14 @@ static void CL_SendDefaultCmd( void ) { // // deliver the message // - cursize = cls.netchan->Transmit( cls.netchan, msg_write.cursize, msg_write.data, 1 ); + cursize = cls.netchan->Transmit(cls.netchan, msg_write.cursize, msg_write.data, 1); #ifdef _DEBUG - if( cl_showpackets->integer ) { - Com_Printf( "%"PRIz" ", cursize ); + if (cl_showpackets->integer) { + Com_Printf("%"PRIz" ", cursize); } #endif - SZ_Clear( &msg_write ); + SZ_Clear(&msg_write); } /* @@ -1019,7 +1059,8 @@ static void CL_SendDefaultCmd( void ) { CL_SendBatchedCmd ================= */ -static void CL_SendBatchedCmd( void ) { +static void CL_SendBatchedCmd(void) +{ int i, j, seq, bits; int numCmds, numDups; int totalCmds, totalMsec; @@ -1029,7 +1070,7 @@ static void CL_SendBatchedCmd( void ) { byte *patch; // see if we are ready to send this packet - if( !ready_to_send() ) { + if (!ready_to_send()) { return; } @@ -1045,49 +1086,49 @@ static void CL_SendBatchedCmd( void ) { cl.lastTransmitCmdNumberReal = cl.cmdNumber; // begin a client move command - patch = SZ_GetSpace( &msg_write, 1 ); + patch = SZ_GetSpace(&msg_write, 1); // let the server know what the last frame we // got was, so the next message can be delta compressed - if( cl_nodelta->integer || !cl.frame.valid /*|| cls.demowaiting*/ ) { + if (cl_nodelta->integer || !cl.frame.valid /*|| cls.demowaiting*/) { *patch = clc_move_nodelta; // no compression } else { *patch = clc_move_batched; - MSG_WriteLong( cl.frame.number ); + MSG_WriteLong(cl.frame.number); } - Cvar_ClampInteger( cl_packetdup, 0, MAX_PACKET_FRAMES - 1 ); + Cvar_ClampInteger(cl_packetdup, 0, MAX_PACKET_FRAMES - 1); numDups = cl_packetdup->integer; *patch |= numDups << SVCMD_BITS; // send lightlevel - MSG_WriteByte( cl.lightlevel ); + MSG_WriteByte(cl.lightlevel); // send this and the previous cmds in the message, so // if the last packet was dropped, it can be recovered oldcmd = NULL; totalCmds = 0; totalMsec = 0; - for( i = seq - numDups; i <= seq; i++ ) { - oldest = &cl.history[( i - 1 ) & CMD_MASK]; + for (i = seq - numDups; i <= seq; i++) { + oldest = &cl.history[(i - 1) & CMD_MASK]; history = &cl.history[i & CMD_MASK]; numCmds = history->cmdNumber - oldest->cmdNumber; - if( numCmds >= MAX_PACKET_USERCMDS ) { - Com_WPrintf( "%s: MAX_PACKET_USERCMDS exceeded\n", __func__ ); - SZ_Clear( &msg_write ); + if (numCmds >= MAX_PACKET_USERCMDS) { + Com_WPrintf("%s: MAX_PACKET_USERCMDS exceeded\n", __func__); + SZ_Clear(&msg_write); break; } totalCmds += numCmds; - MSG_WriteBits( numCmds, 5 ); - for( j = oldest->cmdNumber + 1; j <= history->cmdNumber; j++ ) { + MSG_WriteBits(numCmds, 5); + for (j = oldest->cmdNumber + 1; j <= history->cmdNumber; j++) { cmd = &cl.cmds[j & CMD_MASK]; totalMsec += cmd->msec; - bits = MSG_WriteDeltaUsercmd_Enhanced( oldcmd, cmd, cls.protocolVersion ); + bits = MSG_WriteDeltaUsercmd_Enhanced(oldcmd, cmd, cls.protocolVersion); #ifdef _DEBUG - if( cl_showpackets->integer == 3 ) { - MSG_ShowDeltaUsercmdBits_Enhanced( bits ); + if (cl_showpackets->integer == 3) { + MSG_ShowDeltaUsercmdBits_Enhanced(bits); } #endif oldcmd = cmd; @@ -1099,21 +1140,22 @@ static void CL_SendBatchedCmd( void ) { // // deliver the message // - cursize = cls.netchan->Transmit( cls.netchan, msg_write.cursize, msg_write.data, 1 ); + cursize = cls.netchan->Transmit(cls.netchan, msg_write.cursize, msg_write.data, 1); #ifdef _DEBUG - if( cl_showpackets->integer == 1 ) { - Com_Printf( "%"PRIz"(%i) ", cursize, totalCmds ); - } else if( cl_showpackets->integer == 2 ) { - Com_Printf( "%"PRIz"(%i) ", cursize, totalMsec ); - } else if( cl_showpackets->integer == 3 ) { - Com_Printf( " | " ); + if (cl_showpackets->integer == 1) { + Com_Printf("%"PRIz"(%i) ", cursize, totalCmds); + } else if (cl_showpackets->integer == 2) { + Com_Printf("%"PRIz"(%i) ", cursize, totalMsec); + } else if (cl_showpackets->integer == 3) { + Com_Printf(" | "); } #endif - SZ_Clear( &msg_write ); + SZ_Clear(&msg_write); } -static void CL_SendKeepAlive( void ) { +static void CL_SendKeepAlive(void) +{ client_history_t *history; size_t cursize; @@ -1127,83 +1169,85 @@ static void CL_SendKeepAlive( void ) { cl.lastTransmitCmdNumber = cl.cmdNumber; cl.lastTransmitCmdNumberReal = cl.cmdNumber; - cursize = cls.netchan->Transmit( cls.netchan, 0, NULL, 1 ); + cursize = cls.netchan->Transmit(cls.netchan, 0, NULL, 1); #ifdef _DEBUG - if( cl_showpackets->integer ) { - Com_Printf( "%"PRIz" ", cursize ); + if (cl_showpackets->integer) { + Com_Printf("%"PRIz" ", cursize); } #endif } -static void CL_SendUserinfo( void ) { +static void CL_SendUserinfo(void) +{ char userinfo[MAX_INFO_STRING]; cvar_t *var; int i; - if( !cls.userinfo_modified ) { + if (!cls.userinfo_modified) { return; } - if( cls.userinfo_modified == MAX_PACKET_USERINFOS ) { - size_t len = Cvar_BitInfo( userinfo, CVAR_USERINFO ); - Com_DDPrintf( "%s: %u: full update\n", __func__, com_framenum ); - MSG_WriteByte( clc_userinfo ); - MSG_WriteData( userinfo, len + 1 ); - MSG_FlushTo( &cls.netchan->message ); - } else if( cls.serverProtocol == PROTOCOL_VERSION_Q2PRO ) { - Com_DDPrintf( "%s: %u: %d updates\n", __func__, com_framenum, - cls.userinfo_modified ); - for( i = 0; i < cls.userinfo_modified; i++ ) { + if (cls.userinfo_modified == MAX_PACKET_USERINFOS) { + size_t len = Cvar_BitInfo(userinfo, CVAR_USERINFO); + Com_DDPrintf("%s: %u: full update\n", __func__, com_framenum); + MSG_WriteByte(clc_userinfo); + MSG_WriteData(userinfo, len + 1); + MSG_FlushTo(&cls.netchan->message); + } else if (cls.serverProtocol == PROTOCOL_VERSION_Q2PRO) { + Com_DDPrintf("%s: %u: %d updates\n", __func__, com_framenum, + cls.userinfo_modified); + for (i = 0; i < cls.userinfo_modified; i++) { var = cls.userinfo_updates[i]; - MSG_WriteByte( clc_userinfo_delta ); - MSG_WriteString( var->name ); - if( var->flags & CVAR_USERINFO ) { - MSG_WriteString( var->string ); + MSG_WriteByte(clc_userinfo_delta); + MSG_WriteString(var->name); + if (var->flags & CVAR_USERINFO) { + MSG_WriteString(var->string); } else { // no longer in userinfo - MSG_WriteString( NULL ); + MSG_WriteString(NULL); } } - MSG_FlushTo( &cls.netchan->message ); + MSG_FlushTo(&cls.netchan->message); } else { - Com_WPrintf( "%s: update count is %d, should never happen.\n", - __func__, cls.userinfo_modified ); + Com_WPrintf("%s: update count is %d, should never happen.\n", + __func__, cls.userinfo_modified); } cls.userinfo_modified = 0; } -void CL_SendCmd( void ) { - if( cls.state < ca_connected ) { +void CL_SendCmd(void) +{ + if (cls.state < ca_connected) { return; // not talking to a server } // generate usercmds while playing a demo, // but do not send them - if( !cls.netchan ) { + if (!cls.netchan) { return; } - if( cls.state < ca_active || sv_paused->integer ) { + if (cls.state < ca_active || sv_paused->integer) { // send a userinfo update if needed CL_SendUserinfo(); // just keepalive or update reliable - if( cls.netchan->ShouldUpdate( cls.netchan ) ) { + if (cls.netchan->ShouldUpdate(cls.netchan)) { CL_SendKeepAlive(); } return; } // are there any new usercmds to send after all? - if( cl.lastTransmitCmdNumber == cl.cmdNumber ) { + if (cl.lastTransmitCmdNumber == cl.cmdNumber) { return; // nothing to send } // send a userinfo update if needed CL_SendUserinfo(); - if( cls.serverProtocol == PROTOCOL_VERSION_Q2PRO && cl_batchcmds->integer ) { + if (cls.serverProtocol == PROTOCOL_VERSION_Q2PRO && cl_batchcmds->integer) { CL_SendBatchedCmd(); } else { CL_SendDefaultCmd(); |