about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-09 14:15:57 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-09 14:15:57 +0000
commit8aa0456a2982e0992967e47731034f328c600cba (patch)
treeb011ddb368de8906a1afe4105f524de68182274b /src
parent808959328acbed8467fb8feb25341bb924dfd529 (diff)
downloadzcatch-8aa0456a2982e0992967e47731034f328c600cba.tar.gz
zcatch-8aa0456a2982e0992967e47731034f328c600cba.zip
added mouse sens option
Diffstat (limited to 'src')
-rw-r--r--src/engine/client/inp.c19
-rw-r--r--src/engine/config_variables.h1
-rw-r--r--src/game/client/menu2.cpp11
3 files changed, 28 insertions, 3 deletions
diff --git a/src/engine/client/inp.c b/src/engine/client/inp.c
index 79d39f08..ce973246 100644
--- a/src/engine/client/inp.c
+++ b/src/engine/client/inp.c
@@ -4,6 +4,7 @@
 
 #include <engine/system.h>
 #include <engine/interface.h>
+#include <engine/config.h>
 
 static int keyboard_state[2][1024]; /* TODO: fix this!! */
 static int keyboard_current = 0;
@@ -18,15 +19,27 @@ static struct
 
 static unsigned char input_state[2][1024] = {{0}, {0}};
 
-/*static unsigned char input_state[2][1024] = {{0},{0}};*/
-/*static unsigned char input_state[1024] = {{0},{0}};*/
 static int input_current = 0;
 
 void inp_mouse_relative(int *x, int *y)
 {
 	static int last_x = 0, last_y = 0;
+	static int last_sens = 100.0f;
 	int nx, ny;
+	float sens = config.inp_mousesens/100.0f;
+	
+	if(last_sens != config.inp_mousesens)
+	{
+		last_x = (last_x/(float)last_sens)*(float)config.inp_mousesens;
+		last_y = (last_y/(float)last_sens)*(float)config.inp_mousesens;
+		last_sens = config.inp_mousesens;
+	}
+	
+	
 	glfwGetMousePos(&nx, &ny);
+	nx *= sens;
+	ny *= sens;
+	
 	*x = nx-last_x;
 	*y = ny-last_y;
 	last_x = nx;
@@ -39,7 +52,7 @@ static int last_k = 0;
 static void char_callback(int character, int action)
 {
 	if(action == GLFW_PRESS && character < 256)
-	last_c = (char)character;
+		last_c = (char)character;
 }
 
 static void key_callback(int key, int action)
diff --git a/src/engine/config_variables.h b/src/engine/config_variables.h
index d6225bf1..e67e87c9 100644
--- a/src/engine/config_variables.h
+++ b/src/engine/config_variables.h
@@ -41,6 +41,7 @@ MACRO_CONFIG_INT(gfx_fsaa_samples, 0, 0, 16)
 MACRO_CONFIG_INT(gfx_refresh_rate, 0, 0, 0)
 
 MACRO_CONFIG_INT(key_screenshot, 267, 32, 512)
+MACRO_CONFIG_INT(inp_mousesens, 100, 5, 100000)
 
 MACRO_CONFIG_STR(masterserver, 128, "master.teewars.com")
 
diff --git a/src/game/client/menu2.cpp b/src/game/client/menu2.cpp
index c9019b93..0b19ccfc 100644
--- a/src/game/client/menu2.cpp
+++ b/src/game/client/menu2.cpp
@@ -1190,6 +1190,17 @@ static void menu2_render_settings_controls(RECT main_view)
 {
 	ui2_vsplit_l(&main_view, 300.0f, &main_view, 0);
 	
+	{
+		RECT button, label;
+		ui2_hsplit_t(&main_view, 20.0f, &button, &main_view);
+		ui2_vsplit_l(&button, 110.0f, &label, &button);
+		ui2_do_label(&label, "Mouse sens.", 18.0f, -1);
+		config.inp_mousesens = (int)(ui2_do_scrollbar_h(&config.inp_mousesens, &button, config.inp_mousesens/500.0f)*500.0f);
+		//*key.key = ui2_do_key_reader(key.key, &button, *key.key);
+		ui2_hsplit_t(&main_view, 20.0f, 0, &main_view);
+	}
+
+	
 	typedef struct 
 	{
 		char name[32];