]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - in_win.c
added in_pitch_min and in_pitch_max cvars to limit pitch (default: -90 to +90)
[xonotic/darkplaces.git] / in_win.c
index d814845f45fa596aede653baa711fc8f100dd977..94c343731e41555ee7385df723cd936c78e33d2a 100644 (file)
--- a/in_win.c
+++ b/in_win.c
@@ -534,7 +534,7 @@ IN_MouseMove
 */
 void IN_MouseMove (usercmd_t *cmd)
 {
-       int                                     i, mx, my, mouselook = (in_mlook.state & 1) || freelook.value;
+       int                                     i, mx, my, mouselook = (in_mlook.state & 1) || freelook.integer;
        DIDEVICEOBJECTDATA      od;
        DWORD                           dwElements;
        HRESULT                         hr;
@@ -636,7 +636,7 @@ void IN_MouseMove (usercmd_t *cmd)
 //if (mx ||  my)
 //     Con_DPrintf("mx=%d, my=%d\n", mx, my);
 
-       if (m_filter.value)
+       if (m_filter.integer)
        {
                mouse_x = (mx + old_mouse_x) * 0.5;
                mouse_y = (my + old_mouse_y) * 0.5;
@@ -650,11 +650,12 @@ void IN_MouseMove (usercmd_t *cmd)
        old_mouse_x = mx;
        old_mouse_y = my;
 
-       mouse_x *= sensitivity.value;
-       mouse_y *= sensitivity.value;
+       // LordHavoc: viewzoom affects mouse sensitivity for sniping
+       mouse_x *= sensitivity.value * cl.viewzoom;
+       mouse_y *= sensitivity.value * cl.viewzoom;
 
 // add mouse X/Y movement to cmd
-       if ( (in_strafe.state & 1) || (lookstrafe.value && mouselook))
+       if ( (in_strafe.state & 1) || (lookstrafe.integer && mouselook))
                cmd->sidemove += m_side.value * mouse_x;
        else
                cl.viewangles[YAW] -= m_yaw.value * mouse_x;
@@ -664,13 +665,7 @@ void IN_MouseMove (usercmd_t *cmd)
        
        // LordHavoc: changed limits on pitch from -70 to 80, to -90 to 90
        if (mouselook && !(in_strafe.state & 1))
-       {
                cl.viewangles[PITCH] += m_pitch.value * mouse_y;
-               if (cl.viewangles[PITCH] > 90)
-                       cl.viewangles[PITCH] = 90;
-               if (cl.viewangles[PITCH] < -90)
-                       cl.viewangles[PITCH] = -90;
-       }
        else
        {
                if ((in_strafe.state & 1) && noclip_anglehack)
@@ -694,12 +689,13 @@ IN_Move
 */
 void IN_Move (usercmd_t *cmd)
 {
-
        if (ActiveApp && !Minimized)
        {
                IN_MouseMove (cmd);
                IN_JoyMove (cmd);
        }
+
+       cl.viewangles[PITCH] = bound (in_pitch_min.value, cl.viewangles[PITCH], in_pitch_max.value);
 }
 
 
@@ -859,7 +855,7 @@ void Joy_AdvancedUpdate_f (void)
                pdwRawValue[i] = RawValuePointer(i);
        }
 
-       if( joy_advanced.value == 0.0)
+       if( joy_advanced.integer == 0)
        {
                // default joystick initialization
                // 2 axes only with joystick control
@@ -997,7 +993,7 @@ qboolean IN_ReadJoystick (void)
                // this is a hack -- there is a bug in the Logitech WingMan Warrior DirectInput Driver
                // rather than having 32768 be the zero point, they have the zero point at 32668
                // go figure -- anyway, now we get the full resolution out of the device
-               if (joy_wwhack1.value != 0.0)
+               if (joy_wwhack1.integer != 0.0)
                {
                        ji.dwUpos += 100;
                }
@@ -1024,7 +1020,7 @@ void IN_JoyMove (usercmd_t *cmd)
 {
        float   speed, aspeed;
        float   fAxisValue, fTemp;
-       int             i, mouselook = (in_mlook.state & 1) || freelook.value;
+       int             i, mouselook = (in_mlook.state & 1) || freelook.integer;
 
        // complete initialization if first time in
        // this is needed as cvars are not available at initialization time
@@ -1035,11 +1031,11 @@ void IN_JoyMove (usercmd_t *cmd)
        }
 
        // verify joystick is available and that the user wants to use it
-       if (!joy_avail || !in_joystick.value)
+       if (!joy_avail || !in_joystick.integer)
        {
                return; 
        }
+
        // collect the joystick data, if possible
        if (IN_ReadJoystick () != true)
        {
@@ -1050,7 +1046,8 @@ void IN_JoyMove (usercmd_t *cmd)
                speed = cl_movespeedkey.value;
        else
                speed = 1;
-       aspeed = speed * host_realframetime;
+       // LordHavoc: viewzoom affects sensitivity for sniping
+       aspeed = speed * host_realframetime * cl.viewzoom;
 
        // loop through the axes
        for (i = 0; i < JOY_MAX_AXES; i++)
@@ -1060,7 +1057,7 @@ void IN_JoyMove (usercmd_t *cmd)
                // move centerpoint to zero
                fAxisValue -= 32768.0;
 
-               if (joy_wwhack2.value != 0.0)
+               if (joy_wwhack2.integer != 0.0)
                {
                        if (dwAxisMap[i] == AxisTurn)
                        {
@@ -1082,7 +1079,7 @@ void IN_JoyMove (usercmd_t *cmd)
                switch (dwAxisMap[i])
                {
                case AxisForward:
-                       if ((joy_advanced.value == 0.0) && mouselook)
+                       if ((joy_advanced.integer == 0) && mouselook)
                        {
                                // user wants forward control to become look control
                                if (fabs(fAxisValue) > joy_pitchthreshold.value)
@@ -1127,7 +1124,7 @@ void IN_JoyMove (usercmd_t *cmd)
                        break;
 
                case AxisTurn:
-                       if ((in_strafe.state & 1) || (lookstrafe.value && mouselook))
+                       if ((in_strafe.state & 1) || (lookstrafe.integer && mouselook))
                        {
                                // user wants turn control to become side control
                                if (fabs(fAxisValue) > joy_sidethreshold.value)
@@ -1175,7 +1172,7 @@ void IN_JoyMove (usercmd_t *cmd)
                                        // disable pitch return-to-center unless requested by user
                                        // *** this code can be removed when the lookspring bug is fixed
                                        // *** the bug always has the lookspring feature on
-                                       if(lookspring.value == 0.0)
+                                       if(lookspring.integer == 0)
                                                V_StopPitchDrift();
                                }
                        }