diff --git a/src/game/client/game_client.cpp b/src/game/client/game_client.cpp index c34e81ce7..e5d874d22 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 9143594e1..8b7dd7d10 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 8775074ec..2e91bd2b2 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)