about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/client/game_client.cpp9
-rw-r--r--src/game/client/menu.cpp37
-rw-r--r--src/game/game_variables.h4
3 files changed, 47 insertions, 3 deletions
diff --git a/src/game/client/game_client.cpp b/src/game/client/game_client.cpp
index c34e81ce..e5d874d2 100644
--- a/src/game/client/game_client.cpp
+++ b/src/game/client/game_client.cpp
@@ -1174,8 +1174,13 @@ void modc_render()
 			input.blink = inp_key_pressed('S');
 			
 			// Weapon switching
-			for(int i = 0; i < 8; i++)
-				input.activeweapon = inp_key_pressed('1'+i) ? i : input.activeweapon;
+#define TEST_WEAPON_KEY(key) if (inp_key_pressed(config.key_weapon ## key)) input.activeweapon = key-1;
+			TEST_WEAPON_KEY(1);
+			TEST_WEAPON_KEY(2);
+			TEST_WEAPON_KEY(3);
+			TEST_WEAPON_KEY(4);
+			//for(int i = 0; i < 8; i++)
+			//	input.activeweapon = inp_key_pressed('1'+i) ? i : input.activeweapon;
 		}
 
 		snap_input(&input, sizeof(input));
diff --git a/src/game/client/menu.cpp b/src/game/client/menu.cpp
index 9143594e..8b7dd7d1 100644
--- a/src/game/client/menu.cpp
+++ b/src/game/client/menu.cpp
@@ -766,9 +766,41 @@ static int settings_general_render()
 	return 0;
 }
 
+typedef void (*assign_func_callback)(configuration *config, int value);
+
+struct key_thing
+{
+	char name[32];
+	int *key;
+	assign_func_callback assign_func;
+};
+
 static int settings_controls_render()
 {
+	static int scroll_index = 0;
+
+	key_thing keys[] = 
+	{
+		{ "Move Left:", &config_copy.key_move_left, config_set_key_move_left },
+		{ "Move Right:", &config_copy.key_move_right, config_set_key_move_right },
+		{ "Jump:", &config_copy.key_jump, config_set_key_jump },
+		{ "Fire:", &config_copy.key_fire, config_set_key_fire },
+		{ "Hook:", &config_copy.key_hook, config_set_key_hook },
+		{ "Pistol:", &config_copy.key_weapon1, config_set_key_weapon1 },
+		{ "Grenade:", &config_copy.key_weapon2, config_set_key_weapon2 },
+		{ "Shotgun:", &config_copy.key_weapon3, config_set_key_weapon3 },
+		{ "Hammer:", &config_copy.key_weapon4, config_set_key_weapon4 },
+	};
+
+	for (int i = 0; i < 7; i++)
+	{
+		key_thing key = keys[i + scroll_index];
+		
+		ui_do_label(column1_x, row1_y + 40 * i, key.name, 36);
+		key.assign_func(&config_copy, ui_do_key_reader(key.key, column2_x, row1_y + 40 * i, 150, 36, *key.key));
+	}
 	// KEYS
+	/*
 	ui_do_label(column1_x, row1_y + 0, "Move Left:", 36);
 	config_set_key_move_left(&config_copy, ui_do_key_reader(&config_copy.key_move_left, column2_x, row1_y + 0, 150, 36, config_copy.key_move_left));
 	ui_do_label(column1_x, row1_y + 40, "Move Right:", 36);
@@ -779,11 +811,14 @@ static int settings_controls_render()
 	config_set_key_fire(&config_copy, ui_do_key_reader(&config_copy.key_fire, column2_x, row1_y + 120, 150, 36, config_copy.key_fire));
 	ui_do_label(column1_x, row1_y + 160, "Hook:", 36);
 	config_set_key_hook(&config_copy, ui_do_key_reader(&config_copy.key_hook, column2_x, row1_y + 160, 150, 36, config_copy.key_hook));
+	*/
+
+	scroll_index = do_scroll_bar_vert(&scroll_index, 600, row1_y, 40 * 7, 9 - 7, scroll_index);
 
 	return 0;
 }
 
-static const unsigned MAX_RESOLUTIONS = 8;
+static const int MAX_RESOLUTIONS = 8;
 
 static int settings_video_render()
 {
diff --git a/src/game/game_variables.h b/src/game/game_variables.h
index 8775074e..2e91bd2b 100644
--- a/src/game/game_variables.h
+++ b/src/game/game_variables.h
@@ -3,6 +3,10 @@ MACRO_CONFIG_INT(key_move_right, 68, 32, 512)
 MACRO_CONFIG_INT(key_jump, 32, 32, 512)
 MACRO_CONFIG_INT(key_fire, 384, 32, 512)
 MACRO_CONFIG_INT(key_hook, 385, 32, 512)
+MACRO_CONFIG_INT(key_weapon1, 49, 32, 512)
+MACRO_CONFIG_INT(key_weapon2, 50, 32, 512)
+MACRO_CONFIG_INT(key_weapon3, 51, 32, 512)
+MACRO_CONFIG_INT(key_weapon4, 52, 32, 512)
 
 MACRO_CONFIG_INT(scorelimit, 20, 0, 1000)
 MACRO_CONFIG_INT(timelimit, 0, 0, 1000)