diff options
| author | Jakob Fries <jakob.fries@gmail.com> | 2007-11-24 14:07:06 +0000 |
|---|---|---|
| committer | Jakob Fries <jakob.fries@gmail.com> | 2007-11-24 14:07:06 +0000 |
| commit | 79d495233fa7f14c3ad5ad3e6c3db26220d2f2a3 (patch) | |
| tree | b1c1df5a3cb1685fe22f7a253f5d3404ddb11765 /src/game/client | |
| parent | 51710edd8e8869a8233e7b8c4204e6b2e3fcbe42 (diff) | |
| download | zcatch-79d495233fa7f14c3ad5ad3e6c3db26220d2f2a3.tar.gz zcatch-79d495233fa7f14c3ad5ad3e6c3db26220d2f2a3.zip | |
autoswitch weapons option
Diffstat (limited to 'src/game/client')
| -rw-r--r-- | src/game/client/game_client.cpp | 16 | ||||
| -rw-r--r-- | src/game/client/menu.cpp | 56 |
2 files changed, 67 insertions, 5 deletions
diff --git a/src/game/client/game_client.cpp b/src/game/client/game_client.cpp index d31d0147..c2846c15 100644 --- a/src/game/client/game_client.cpp +++ b/src/game/client/game_client.cpp @@ -53,6 +53,8 @@ const obj_player_info *local_info = 0; static const obj_flag *flags[2] = {0,0}; static const obj_game *gameobj = 0; +static int picked_up_weapon = 0; + static struct client_data { char name[64]; @@ -2147,7 +2149,11 @@ void render_game() if(inp_key_presses(config.key_next_weapon) || inp_key_presses(config.key_prev_weapon)) input.wanted_weapon = 0; - else + else if (config.autoswitch_weapons && picked_up_weapon) + { + input.wanted_weapon = picked_up_weapon; + } + else { if(inp_key_presses(config.key_weapon1)) input.wanted_weapon = 1; if(inp_key_presses(config.key_weapon2)) input.wanted_weapon = 2; @@ -2156,6 +2162,8 @@ void render_game() if(inp_key_presses(config.key_weapon5)) input.wanted_weapon = 5; if(inp_key_presses(config.key_weapon6)) input.wanted_weapon = 6; } + + picked_up_weapon = 0; } // stress testing @@ -2766,6 +2774,12 @@ extern "C" void modc_message(int msg) client_datas[cid].skin_info.color_feet = vec4(1,1,1,1); } } + else if(msg == MSG_WEAPON_PICKUP) + { + int weapon = msg_unpack_int(); + + picked_up_weapon = weapon+1; + } else if(msg == MSG_READY_TO_ENTER) { client_entergame(); diff --git a/src/game/client/menu.cpp b/src/game/client/menu.cpp index 6067edf0..9395965d 100644 --- a/src/game/client/menu.cpp +++ b/src/game/client/menu.cpp @@ -944,8 +944,24 @@ static void middle_render(const struct rect *r) { static struct rect browser; static bool inited = false; + ui_margin(r, 5, &browser); - ui_do_button_rect(&browser, "b", 0, &browser, draw_teewars_button, 0); + + { + struct rect button_row; + static struct rect button_refresh, button_connect; + + ui_hsplit_b(&browser, 30, &browser, &button_row); + ui_vsplit_l(&button_row, 100, &button_refresh, &button_row); + ui_vsplit_l(&button_row, 100, &button_connect, &button_row); + + if (ui_do_button_rect(&button_refresh, "Refresh", 0, &button_refresh, draw_teewars_button, 0)) + client_serverbrowse_refresh(0); + + if (ui_do_button_rect(&button_connect, "Connect", 0, &button_connect, draw_teewars_button, 0)) + {} + + } if (!inited) { @@ -957,7 +973,34 @@ static void middle_render(const struct rect *r) int server_count = client_serverbrowse_sorted_num(); int i; - struct rect rest = *r; + struct rect rest = browser; + + struct rect button_row; + + static struct rect button_name, button_players, button_players_max, button_map, button_latency, button_progression; + + ui_hsplit_t(&rest, 32, &button_row, &rest); + ui_margin(&button_row, 1, &button_row); + + ui_vsplit_l(&button_row, 400, &button_name, &button_row); + ui_vsplit_l(&button_row, 40, &button_players, &button_row); + ui_vsplit_l(&button_row, 40, &button_players_max, &button_row); + ui_vsplit_l(&button_row, 80, &button_map, &button_row); + ui_vsplit_l(&button_row, 40, &button_latency, &button_row); + ui_vsplit_l(&button_row, 40, &button_progression, &button_row); + + if (ui_do_button_rect(&button_name, "Name", 0, &button_name, draw_teewars_button, 0)) + config.b_sort = BROWSESORT_NAME; + if (ui_do_button_rect(&button_players, "Players", 0, &button_players, draw_teewars_button, 0)) + config.b_sort = BROWSESORT_NUMPLAYERS; + if (ui_do_button_rect(&button_players_max, "Max Players", 0, &button_players_max, draw_teewars_button, 0)) + config.b_sort = BROWSESORT_NUMPLAYERS; // TODO: real enum here + if (ui_do_button_rect(&button_map, "Map", 0, &button_map, draw_teewars_button, 0)) + config.b_sort = BROWSESORT_MAP; + if (ui_do_button_rect(&button_latency, "Ping", 0, &button_latency, draw_teewars_button, 0)) + config.b_sort = BROWSESORT_PING; + if (ui_do_button_rect(&button_progression, "Progression", 0, &button_progression, draw_teewars_button, 0)) + config.b_sort = BROWSESORT_PING; // TODO: real enum here for (i = 0; i < server_count; i++) { @@ -966,7 +1009,12 @@ static void middle_render(const struct rect *r) struct rect col_name, col_players, col_players_max, col_map, col_latency, col_progression; char temp[16]; + ui_hsplit_t(&rest, 32, &row, &rest); + + if (rest.h < 0) + break; + ui_margin(&row, 1, &row); ui_vsplit_l(&row, 400, &col_name, &row); @@ -1728,10 +1776,10 @@ static int menu_render(bool ingame) ui_scale(scale); int retn = ui_menu_render(screen); - gfx_texture_set(-1); + /*gfx_texture_set(-1); gfx_lines_begin(); ui_foreach_rect(draw_rect); - gfx_lines_end(); + gfx_lines_end();*/ return retn; } |