Vereinfache den Code ein wenig

This commit is contained in:
Yamagi Burmeister 2010-10-19 08:30:02 +00:00
parent 1807604001
commit 68135136bc

View file

@ -38,7 +38,6 @@ static cvar_t *windowed_mouse;
static cvar_t *windowed_mouse_always; static cvar_t *windowed_mouse_always;
static int mouse_x, mouse_y; static int mouse_x, mouse_y;
static int old_mouse_x, old_mouse_y; static int old_mouse_x, old_mouse_y;
static qboolean mouse_avail;
static int mouse_buttonstate; static int mouse_buttonstate;
static int mouse_oldbuttonstate; static int mouse_oldbuttonstate;
@ -246,7 +245,7 @@ IN_GetEvent(SDL_Event *event)
} }
break; break;
/* The user released a key */ /* The user released a key */
case SDL_KEYUP: case SDL_KEYUP:
if (KeyStates[event->key.keysym.sym]) if (KeyStates[event->key.keysym.sym])
{ {
@ -449,7 +448,6 @@ IN_BackendInit ( in_state_t *in_state_p )
ri.Cmd_AddCommand( "force_centerview", IN_ForceCenterView ); ri.Cmd_AddCommand( "force_centerview", IN_ForceCenterView );
mouse_x = mouse_y = 0.0; mouse_x = mouse_y = 0.0;
mouse_avail = true;
/* SDL stuff */ /* SDL stuff */
SDL_EnableUNICODE( 0 ); SDL_EnableUNICODE( 0 );
@ -467,14 +465,9 @@ IN_BackendInit ( in_state_t *in_state_p )
void void
IN_BackendShutdown ( void ) IN_BackendShutdown ( void )
{ {
if ( mouse_avail ) ri.Cmd_RemoveCommand( "+mlook" );
{ ri.Cmd_RemoveCommand( "-mlook" );
mouse_avail = false; ri.Cmd_RemoveCommand( "force_centerview" );
ri.Cmd_RemoveCommand( "+mlook" );
ri.Cmd_RemoveCommand( "-mlook" );
ri.Cmd_RemoveCommand( "force_centerview" );
}
} }
void void
@ -482,121 +475,115 @@ IN_BackendMouseButtons ( void )
{ {
int i; int i;
if ( mouse_avail ) IN_GetMouseState( &mouse_x, &mouse_y, &mouse_buttonstate );
for ( i = 0; i < 3; i++ )
{ {
IN_GetMouseState( &mouse_x, &mouse_y, &mouse_buttonstate ); if ( ( mouse_buttonstate & ( 1 << i ) ) && !( mouse_oldbuttonstate & ( 1 << i ) ) )
for ( i = 0; i < 3; i++ )
{ {
if ( ( mouse_buttonstate & ( 1 << i ) ) && !( mouse_oldbuttonstate & ( 1 << i ) ) ) in_state->Key_Event_fp( K_MOUSE1 + i, true );
{
in_state->Key_Event_fp( K_MOUSE1 + i, true );
}
if ( !( mouse_buttonstate & ( 1 << i ) ) && ( mouse_oldbuttonstate & ( 1 << i ) ) )
{
in_state->Key_Event_fp( K_MOUSE1 + i, false );
}
} }
if ( ( mouse_buttonstate & ( 1 << 3 ) ) && !( mouse_oldbuttonstate & ( 1 << 3 ) ) ) if ( !( mouse_buttonstate & ( 1 << i ) ) && ( mouse_oldbuttonstate & ( 1 << i ) ) )
{ {
in_state->Key_Event_fp( K_MOUSE4, true ); in_state->Key_Event_fp( K_MOUSE1 + i, false );
} }
if ( !( mouse_buttonstate & ( 1 << 3 ) ) && ( mouse_oldbuttonstate & ( 1 << 3 ) ) )
{
in_state->Key_Event_fp( K_MOUSE4, false );
}
if ( ( mouse_buttonstate & ( 1 << 4 ) ) && !( mouse_oldbuttonstate & ( 1 << 4 ) ) )
{
in_state->Key_Event_fp( K_MOUSE5, true );
}
if ( !( mouse_buttonstate & ( 1 << 4 ) ) && ( mouse_oldbuttonstate & ( 1 << 4 ) ) )
{
in_state->Key_Event_fp( K_MOUSE5, false );
}
mouse_oldbuttonstate = mouse_buttonstate;
} }
if ( ( mouse_buttonstate & ( 1 << 3 ) ) && !( mouse_oldbuttonstate & ( 1 << 3 ) ) )
{
in_state->Key_Event_fp( K_MOUSE4, true );
}
if ( !( mouse_buttonstate & ( 1 << 3 ) ) && ( mouse_oldbuttonstate & ( 1 << 3 ) ) )
{
in_state->Key_Event_fp( K_MOUSE4, false );
}
if ( ( mouse_buttonstate & ( 1 << 4 ) ) && !( mouse_oldbuttonstate & ( 1 << 4 ) ) )
{
in_state->Key_Event_fp( K_MOUSE5, true );
}
if ( !( mouse_buttonstate & ( 1 << 4 ) ) && ( mouse_oldbuttonstate & ( 1 << 4 ) ) )
{
in_state->Key_Event_fp( K_MOUSE5, false );
}
mouse_oldbuttonstate = mouse_buttonstate;
} }
void void
IN_BackendMove ( usercmd_t *cmd ) IN_BackendMove ( usercmd_t *cmd )
{ {
if ( mouse_avail ) IN_GetMouseState( &mouse_x, &mouse_y, &mouse_buttonstate );
if ( m_filter->value )
{ {
IN_GetMouseState( &mouse_x, &mouse_y, &mouse_buttonstate ); mouse_x = ( mouse_x + old_mouse_x ) * 0.5;
mouse_y = ( mouse_y + old_mouse_y ) * 0.5;
}
if ( m_filter->value ) old_mouse_x = mouse_x;
old_mouse_y = mouse_y;
if ( mouse_x || mouse_y )
{
if ( !exponential_speedup->value )
{ {
mouse_x = ( mouse_x + old_mouse_x ) * 0.5; mouse_x *= sensitivity->value;
mouse_y = ( mouse_y + old_mouse_y ) * 0.5; mouse_y *= sensitivity->value;
} }
else
old_mouse_x = mouse_x;
old_mouse_y = mouse_y;
if ( mouse_x || mouse_y )
{ {
if ( !exponential_speedup->value ) if ( ( mouse_x > MOUSE_MIN ) || ( mouse_y > MOUSE_MIN ) ||
( mouse_x < -MOUSE_MIN ) || ( mouse_y < -MOUSE_MIN ) )
{ {
mouse_x *= sensitivity->value; mouse_x = ( mouse_x * mouse_x * mouse_x ) / 4;
mouse_y *= sensitivity->value; mouse_y = ( mouse_y * mouse_y * mouse_y ) / 4;
}
else if ( mouse_x > MOUSE_MAX )
{
if ( ( mouse_x > MOUSE_MIN ) || ( mouse_y > MOUSE_MIN ) ||
( mouse_x < -MOUSE_MIN ) || ( mouse_y < -MOUSE_MIN ) )
{ {
mouse_x = ( mouse_x * mouse_x * mouse_x ) / 4; mouse_x = MOUSE_MAX;
mouse_y = ( mouse_y * mouse_y * mouse_y ) / 4; }
else if ( mouse_x < -MOUSE_MAX )
{
mouse_x = -MOUSE_MAX;
}
if ( mouse_x > MOUSE_MAX ) if ( mouse_y > MOUSE_MAX )
{ {
mouse_x = MOUSE_MAX; mouse_y = MOUSE_MAX;
} }
else if ( mouse_x < -MOUSE_MAX ) else if ( mouse_y < -MOUSE_MAX )
{ {
mouse_x = -MOUSE_MAX; mouse_y = -MOUSE_MAX;
}
if ( mouse_y > MOUSE_MAX )
{
mouse_y = MOUSE_MAX;
}
else if ( mouse_y < -MOUSE_MAX )
{
mouse_y = -MOUSE_MAX;
}
} }
} }
/* add mouse X/Y movement to cmd */
if ( ( *in_state->in_strafe_state & 1 ) ||
( lookstrafe->value && mlooking ) )
{
cmd->sidemove += m_side->value * mouse_x;
}
else
{
in_state->viewangles [ YAW ] -= m_yaw->value * mouse_x;
}
if ( ( mlooking || freelook->value ) &&
!( *in_state->in_strafe_state & 1 ) )
{
in_state->viewangles [ PITCH ] += m_pitch->value * mouse_y;
}
else
{
cmd->forwardmove -= m_forward->value * mouse_y;
}
IN_ClearMouseState();
} }
/* add mouse X/Y movement to cmd */
if ( ( *in_state->in_strafe_state & 1 ) ||
( lookstrafe->value && mlooking ) )
{
cmd->sidemove += m_side->value * mouse_x;
}
else
{
in_state->viewangles [ YAW ] -= m_yaw->value * mouse_x;
}
if ( ( mlooking || freelook->value ) &&
!( *in_state->in_strafe_state & 1 ) )
{
in_state->viewangles [ PITCH ] += m_pitch->value * mouse_y;
}
else
{
cmd->forwardmove -= m_forward->value * mouse_y;
}
IN_ClearMouseState();
} }
} }