about summary refs log tree commit diff
path: root/src/game/client
diff options
context:
space:
mode:
authorJakob Fries <jakob.fries@gmail.com>2007-11-24 14:07:06 +0000
committerJakob Fries <jakob.fries@gmail.com>2007-11-24 14:07:06 +0000
commit79d495233fa7f14c3ad5ad3e6c3db26220d2f2a3 (patch)
treeb1c1df5a3cb1685fe22f7a253f5d3404ddb11765 /src/game/client
parent51710edd8e8869a8233e7b8c4204e6b2e3fcbe42 (diff)
downloadzcatch-79d495233fa7f14c3ad5ad3e6c3db26220d2f2a3.tar.gz
zcatch-79d495233fa7f14c3ad5ad3e6c3db26220d2f2a3.zip
autoswitch weapons option
Diffstat (limited to 'src/game/client')
-rw-r--r--src/game/client/game_client.cpp16
-rw-r--r--src/game/client/menu.cpp56
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;
     }