summaryrefslogtreecommitdiffstats
path: root/src/jake2/sys/IN.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jake2/sys/IN.java')
-rw-r--r--src/jake2/sys/IN.java112
1 files changed, 99 insertions, 13 deletions
diff --git a/src/jake2/sys/IN.java b/src/jake2/sys/IN.java
index db88226..5935a0a 100644
--- a/src/jake2/sys/IN.java
+++ b/src/jake2/sys/IN.java
@@ -2,7 +2,7 @@
* IN.java
* Copyright (C) 2003
*
- * $Id: IN.java,v 1.1 2004-07-07 19:59:51 hzi Exp $
+ * $Id: IN.java,v 1.2 2004-07-08 15:58:46 hzi Exp $
*/
/*
Copyright (C) 1997-2001 Id Software, Inc.
@@ -26,8 +26,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
package jake2.sys;
import jake2.Globals;
+import jake2.client.CL_input;
+import jake2.client.Key;
+import jake2.game.Cmd;
import jake2.game.usercmd_t;
import jake2.qcommon.Cvar;
+import jake2.qcommon.xcommand_t;
import java.awt.*;
@@ -44,9 +48,17 @@ public final class IN extends Globals {
static boolean mouse_avail = true;
static boolean mouse_active = false;
static boolean ignorefirst = false;
+
+ static int mouse_buttonstate;
+ static int mouse_oldbuttonstate;
+
+ static int old_mouse_x;
+ static int old_mouse_y;
+
+ static boolean mlooking;
public static void ActivateMouse() {
- // if (!mouse_avail || c == null) return;
+ if (!mouse_avail || c == null) return;
if (!mouse_active) {
KBD.mx = KBD.my = 0; // don't spazz
install_grabs();
@@ -55,7 +67,7 @@ public final class IN extends Globals {
}
public static void DeactivateMouse() {
- // if (!mouse_avail || c == null) return;
+ // if (!mouse_avail || c == null) return;
if (mouse_active) {
uninstall_grabs();
mouse_active = false;
@@ -78,10 +90,13 @@ public final class IN extends Globals {
}
public static void toggleMouse() {
- if (mouse_active)
+ if (mouse_active) {
+ mouse_avail=false;
DeactivateMouse();
- else
+ } else {
+ mouse_avail=true;
ActivateMouse();
+ }
}
public static void Init() {
@@ -90,25 +105,57 @@ public final class IN extends Globals {
}
public static void Shutdown() {
- RW.IN_Shutdown();
+ mouse_avail = false;
}
public static void Real_IN_Init() {
- RW.IN_Init();
+ // mouse variables
+ Globals.m_filter = Cvar.Get("m_filter", "0", 0);
+ Globals.in_mouse = Cvar.Get("in_mouse", "1", CVAR_ARCHIVE);
+ Globals.freelook = Cvar.Get("freelook", "0", 0 );
+ Globals.lookstrafe = Cvar.Get("lookstrafe", "0", 0);
+ Globals.sensitivity = Cvar.Get("sensitivity", "3", 0);
+ Globals.m_pitch = Cvar.Get("m_pitch", "0.022", 0);
+ Globals.m_yaw = Cvar.Get("m_yaw", "0.022", 0);
+ Globals.m_forward = Cvar.Get("m_forward", "1", 0);
+ Globals.m_side = Cvar.Get("m_side", "0.8", 0);
+
+ Cmd.AddCommand("+mlook", new xcommand_t() {
+ public void execute() {MLookDown();}});
+ Cmd.AddCommand("-mlook", new xcommand_t() {
+ public void execute() {MLookUp();}});
+
+ Cmd.AddCommand ("force_centerview", new xcommand_t() {
+ public void execute() {Force_CenterView_f();}});
+
+ Cmd.AddCommand ("togglemouse", new xcommand_t() {
+ public void execute() {toggleMouse();}});
+
+ IN.mouse_avail = true;
}
public static void Commands() {
- RW.IN_Commands();
+ int i;
+
+ if (!IN.mouse_avail)
+ return;
+
+ for (i=0 ; i<3 ; i++) {
+ if ( (IN.mouse_buttonstate & (1<<i)) != 0 && (IN.mouse_oldbuttonstate & (1<<i)) == 0 )
+ KBD.Do_Key_Event(Key.K_MOUSE1 + i, true);
+
+ if ( (IN.mouse_buttonstate & (1<<i)) == 0 && (IN.mouse_oldbuttonstate & (1<<i)) != 0 )
+ KBD.Do_Key_Event(Key.K_MOUSE1 + i, false);
+ }
+ IN.mouse_oldbuttonstate = IN.mouse_buttonstate;
}
public static void Frame() {
if ( !cl.refresh_prepped || cls.key_dest == key_console || cls.key_dest == key_menu)
- RW.IN_Activate(false);
+ DeactivateMouse();
else
- RW.IN_Activate(true);
-
- RW.IN_Frame();
+ ActivateMouse();
}
public static void CenterView() {
@@ -116,7 +163,46 @@ public final class IN extends Globals {
}
public static void Move(usercmd_t cmd) {
- RW.IN_Move(cmd);
+ if (!IN.mouse_avail)
+ return;
+
+ if (Globals.m_filter.value != 0.0f) {
+ KBD.mx = (KBD.mx + IN.old_mouse_x) / 2;
+ KBD.my = (KBD.my + IN.old_mouse_y) / 2;
+ }
+
+ IN.old_mouse_x = KBD.mx;
+ IN.old_mouse_y = KBD.my;
+
+ KBD.mx = (int)(KBD.mx * Globals.sensitivity.value);
+ KBD.my = (int)(KBD.my * Globals.sensitivity.value);
+
+ // add mouse X/Y movement to cmd
+ if ( (CL_input.in_strafe.state & 1) != 0 || ((Globals.lookstrafe.value != 0) && IN.mlooking )) {
+ cmd.sidemove += Globals.m_side.value * KBD.mx;
+ } else {
+ Globals.cl.viewangles[YAW] -= Globals.m_yaw.value * KBD.mx;
+ }
+
+ if ( (IN.mlooking || Globals.freelook.value != 0.0f) && (CL_input.in_strafe.state & 1) == 0) {
+ Globals.cl.viewangles[PITCH] += Globals.m_pitch.value * KBD.my;
+ } else {
+ cmd.forwardmove -= Globals.m_forward.value * KBD.my;
+ }
+ KBD.mx = KBD.my = 0;
+ }
+
+ static void MLookDown() {
+ mlooking = true;
+ }
+
+ static void MLookUp() {
+ mlooking = false;
+ CenterView();
+ }
+
+ static void Force_CenterView_f() {
+ Globals.cl.viewangles[PITCH] = 0;
}
}