diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-10-04 22:37:35 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-10-04 22:37:35 +0000 |
| commit | b73dcec3975877fd374b55b425c99bb1d6921b53 (patch) | |
| tree | 4463603511162ff4986bccfa37ee8768848a20eb /src/game | |
| parent | 10812e621a4cf485a62d76444a6af5dec6cc92f1 (diff) | |
| download | zcatch-b73dcec3975877fd374b55b425c99bb1d6921b53.tar.gz zcatch-b73dcec3975877fd374b55b425c99bb1d6921b53.zip | |
added mousewheel support. added next/prev weapon support
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/client/game_client.cpp | 15 | ||||
| -rw-r--r-- | src/game/client/menu.cpp | 8 | ||||
| -rw-r--r-- | src/game/game_variables.h | 4 | ||||
| -rw-r--r-- | src/game/server/game_server.cpp | 32 |
4 files changed, 42 insertions, 17 deletions
diff --git a/src/game/client/game_client.cpp b/src/game/client/game_client.cpp index dfb8e698..80a71114 100644 --- a/src/game/client/game_client.cpp +++ b/src/game/client/game_client.cpp @@ -1780,7 +1780,7 @@ void render_game() input.target_x = (int)mouse_pos.x; input.target_y = (int)mouse_pos.y; - input.activeweapon = -1; + input.activeweapon = 0; if(chat_mode != CHATMODE_NONE) input.state = STATE_CHATTING; @@ -1795,13 +1795,14 @@ void render_game() // TODO: this is not very well done. it should check this some other way input.fire = emoticon_selector_active ? 0 : inp_key_pressed(config.key_fire); input.hook = inp_key_pressed(config.key_hook); - - //input.blink = inp_key_pressed('S'); + // Weapon switching - if(inp_key_pressed(config.key_weapon1)) input.activeweapon = 0; - if(inp_key_pressed(config.key_weapon2)) input.activeweapon = 1; - if(inp_key_pressed(config.key_weapon3)) input.activeweapon = 2; - if(inp_key_pressed(config.key_weapon4)) input.activeweapon = 3; + if(inp_key_pressed(config.key_next_weapon)) input.activeweapon = -1; + if(inp_key_pressed(config.key_prev_weapon)) input.activeweapon = -2; + if(inp_key_pressed(config.key_weapon1)) input.activeweapon = 1; + if(inp_key_pressed(config.key_weapon2)) input.activeweapon = 2; + if(inp_key_pressed(config.key_weapon3)) input.activeweapon = 3; + if(inp_key_pressed(config.key_weapon4)) input.activeweapon = 4; } // stress testing diff --git a/src/game/client/menu.cpp b/src/game/client/menu.cpp index e781fcdf..ad418615 100644 --- a/src/game/client/menu.cpp +++ b/src/game/client/menu.cpp @@ -807,10 +807,12 @@ static int settings_controls_render() { "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 }, + { "Hammer:", &config_copy.key_weapon1, config_set_key_weapon1 }, + { "Pistol:", &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 }, + { "Grenade:", &config_copy.key_weapon4, config_set_key_weapon4 }, + { "Next Weapon:", &config_copy.key_next_weapon, config_set_key_next_weapon }, + { "Prev. Weapon:", &config_copy.key_prev_weapon, config_set_key_prev_weapon }, { "Emoticon:", &config_copy.key_emoticon, config_set_key_emoticon }, { "Screenshot:", &config_copy.key_screenshot, config_set_key_screenshot }, }; diff --git a/src/game/game_variables.h b/src/game/game_variables.h index 464f30a9..889b8786 100644 --- a/src/game/game_variables.h +++ b/src/game/game_variables.h @@ -7,6 +7,10 @@ MACRO_CONFIG_INT(key_weapon1, '1', 32, 512) MACRO_CONFIG_INT(key_weapon2, '2', 32, 512) MACRO_CONFIG_INT(key_weapon3, '3', 32, 512) MACRO_CONFIG_INT(key_weapon4, '4', 32, 512) + +MACRO_CONFIG_INT(key_next_weapon, 382, 32, 512) +MACRO_CONFIG_INT(key_prev_weapon, 383, 32, 512) + MACRO_CONFIG_INT(key_emoticon, 'E', 32, 512) MACRO_CONFIG_INT(key_chat, 'T', 32, 512) diff --git a/src/game/server/game_server.cpp b/src/game/server/game_server.cpp index cf4be747..95b01967 100644 --- a/src/game/server/game_server.cpp +++ b/src/game/server/game_server.cpp @@ -725,16 +725,34 @@ int player::handle_weapons() } // switch weapon if wanted - if(input.activeweapon >= 0 && input.activeweapon < NUM_WEAPONS && weapons[input.activeweapon].got && - data->weapons[active_weapon].duration <= 0) + if(input.activeweapon && data->weapons[active_weapon].duration <= 0) { - if (active_weapon != input.activeweapon) - create_sound(pos, SOUND_WEAPON_SWITCH); + int new_weapon = active_weapon; + if(input.activeweapon > 0) // straight selection + new_weapon = input.activeweapon-1; + else if(input.activeweapon == -1 && !previnput.activeweapon) // next weapon + { + do + new_weapon = (new_weapon+1)%NUM_WEAPONS; + while(!weapons[new_weapon].got); + } + else if(input.activeweapon == -2 && !previnput.activeweapon) + { + do + new_weapon = (new_weapon-1)<0?NUM_WEAPONS-1:new_weapon-1; + while(!weapons[new_weapon].got); + } + + if(new_weapon >= 0 && new_weapon < NUM_WEAPONS && weapons[new_weapon].got) + { + if(active_weapon != new_weapon) + create_sound(pos, SOUND_WEAPON_SWITCH); - last_weapon = active_weapon; - active_weapon = input.activeweapon; + last_weapon = active_weapon; + active_weapon = new_weapon; + } } - + if(!previnput.fire && input.fire) { if(reload_timer == 0) |