about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/engine/client/ec_srvbrowse.c5
-rw-r--r--src/engine/e_config_variables.h1
-rw-r--r--src/engine/e_if_mods.h3
-rw-r--r--src/engine/e_if_other.h7
-rw-r--r--src/engine/server/es_server.c6
-rw-r--r--src/game/client/components/menus_browser.cpp28
-rw-r--r--src/game/server/hooks.cpp10
7 files changed, 52 insertions, 8 deletions
diff --git a/src/engine/client/ec_srvbrowse.c b/src/engine/client/ec_srvbrowse.c
index 67c788e3..9d2ed195 100644
--- a/src/engine/client/ec_srvbrowse.c
+++ b/src/engine/client/ec_srvbrowse.c
@@ -162,7 +162,9 @@ static void client_serverbrowse_filter()
 			filtered = 1;
 		else if(config.b_filter_full && serverlist[i]->info.num_players == serverlist[i]->info.max_players)
 			filtered = 1;
-		else if(config.b_filter_pw && serverlist[i]->info.flags&1)
+		else if(config.b_filter_pw && serverlist[i]->info.flags&SRVFLAG_PASSWORD)
+			filtered = 1;
+		else if(config.b_filter_tuned && serverlist[i]->info.flags&SRVFLAG_TUNED)
 			filtered = 1;
 		else if(config.b_filter_ping < serverlist[i]->info.latency)
 			filtered = 1;
@@ -222,6 +224,7 @@ static int client_serverbrowse_sorthash()
 	i |= config.b_filter_pw<<6;
 	i |= config.b_sort_order<<7;
 	i |= config.b_filter_compatversion<<8;
+	i |= config.b_filter_tuned<<9;
 	i |= config.b_filter_ping<<16;
 	return i;
 }
diff --git a/src/engine/e_config_variables.h b/src/engine/e_config_variables.h
index 1eef9c4e..7eca3b04 100644
--- a/src/engine/e_config_variables.h
+++ b/src/engine/e_config_variables.h
@@ -19,6 +19,7 @@ MACRO_CONFIG_INT(b_filter_empty, 0, 0, 1)
 MACRO_CONFIG_INT(b_filter_pw, 0, 0, 1)
 MACRO_CONFIG_INT(b_filter_ping, 999, 0, 999)
 MACRO_CONFIG_STR(b_filter_gametype, 128, "")
+MACRO_CONFIG_INT(b_filter_tuned, 1, 0, 1)
 MACRO_CONFIG_INT(b_filter_compatversion, 1, 0, 1)
 
 MACRO_CONFIG_INT(b_sort, 0, 0, 256)
diff --git a/src/engine/e_if_mods.h b/src/engine/e_if_mods.h
index 08d0ec37..31bf075f 100644
--- a/src/engine/e_if_mods.h
+++ b/src/engine/e_if_mods.h
@@ -165,4 +165,7 @@ const char *mods_version();
 */
 void mods_message(int msg, int client_id);
 
+
+int mods_is_tuned();
+
 #endif
diff --git a/src/engine/e_if_other.h b/src/engine/e_if_other.h
index 8fc28c54..85148d85 100644
--- a/src/engine/e_if_other.h
+++ b/src/engine/e_if_other.h
@@ -29,6 +29,13 @@ enum
 	MAX_NAME_LENGTH=32
 };
 
+enum
+{
+	SRVFLAG_PASSWORD = 0x1,
+	SRVFLAG_TUNED = 0x2,
+	SRVFLAG_MOD = 0x4
+};
+
 /*
 	Structure: SNAP_ITEM
 */
diff --git a/src/engine/server/es_server.c b/src/engine/server/es_server.c
index dd4fe81f..d761e81e 100644
--- a/src/engine/server/es_server.c
+++ b/src/engine/server/es_server.c
@@ -819,8 +819,10 @@ static void server_send_serverinfo(NETADDR *addr, int token)
 
 	/* flags */
 	i = 0;
-	if(config.password[0])
-		i |= 1;
+	if(config.password[0])   /* password set */
+		i |= SRVFLAG_PASSWORD;
+	if (mods_is_tuned())     /* is tuned */
+		i |= SRVFLAG_TUNED;
 	str_format(buf, sizeof(buf), "%d", i);
 	packer_add_string(&p, buf, 2);
 
diff --git a/src/game/client/components/menus_browser.cpp b/src/game/client/components/menus_browser.cpp
index 376f87bb..a4e730e6 100644
--- a/src/game/client/components/menus_browser.cpp
+++ b/src/game/client/components/menus_browser.cpp
@@ -46,6 +46,7 @@ void MENUS::render_serverbrowser_serverlist(RECT view)
 		SPACER=2,
 		
 		COL_FLAG_LOCK=0,
+		COL_FLAG_TUNED,
 		COL_FLAG_FAV,
 		COL_NAME,
 		COL_GAMETYPE,
@@ -59,6 +60,7 @@ void MENUS::render_serverbrowser_serverlist(RECT view)
 	static column cols[] = {
 		{-1,			-1,						" ",		-1, 2.0f, 0, {0}, {0}},
 		{COL_FLAG_LOCK,	-1,						" ",		-1, 14.0f, 0, {0}, {0}},
+		{COL_FLAG_TUNED,	-1,						" ",		-1, 14.0f, 0, {0}, {0}},
 		{COL_FLAG_FAV,	-1,						" ",		-1, 14.0f, 0, {0}, {0}},
 		{COL_NAME,		BROWSESORT_NAME,		"Name",		0, 300.0f, 0, {0}, {0}},
 		{COL_GAMETYPE,	BROWSESORT_GAMETYPE,	"Type",		1, 50.0f, 0, {0}, {0}},
@@ -221,9 +223,14 @@ void MENUS::render_serverbrowser_serverlist(RECT view)
 			
 			if(id == COL_FLAG_LOCK)
 			{
-				if(item->flags&1)
+				if(item->flags & SRVFLAG_PASSWORD)
 					ui_draw_browse_icon(SPRITE_BROWSE_LOCK, &button);
-			}	
+			}
+			else if(id == COL_FLAG_TUNED)
+			{
+				if(item->flags & SRVFLAG_TUNED)
+					ui_draw_browse_icon(SPRITE_BROWSE_TUNED, &button);
+			}
 			else if(id == COL_FLAG_FAV)
 			{
 				if(item->favorite)
@@ -347,6 +354,10 @@ void MENUS::render_serverbrowser_filters(RECT view)
 		config.b_filter_compatversion ^= 1;
 
 	ui_hsplit_t(&view, 20.0f, &button, &view);
+	if (ui_do_button((char *)&config.b_filter_tuned, "No tuned", config.b_filter_tuned, &button, ui_draw_checkbox, 0))
+		config.b_filter_tuned ^= 1;
+
+	ui_hsplit_t(&view, 20.0f, &button, &view);
 	ui_do_label(&button, "Game types: ", 14.0f, -1);
 	ui_vsplit_l(&button, 95.0f, 0, &button);
 	ui_margin(&button, 1.0f, &button);
@@ -383,8 +394,9 @@ void MENUS::render_serverbrowser_filters(RECT view)
 		config.b_filter_ping = 999;
 		config.b_filter_gametype[0] = 0;
 		config.b_filter_compatversion = 1;
+		config.b_filter_tuned = 1;
 		config.b_filter_string[0] = 0;
-	}		
+	}
 }
 
 void MENUS::render_serverbrowser_serverdetail(RECT view)
@@ -415,7 +427,7 @@ void MENUS::render_serverbrowser_serverdetail(RECT view)
 	if (selected_server)
 	{
 		RECT row;
-		static const char *labels[] = { "Version:", "Game Type:", "Progression:", "Ping:" };
+		static const char *labels[] = { "Version:", "Game Type:", "Tuning:", "Progression:", "Ping:" };
 
 		RECT left_column;
 		RECT right_column;
@@ -438,7 +450,7 @@ void MENUS::render_serverbrowser_serverdetail(RECT view)
 		ui_vsplit_l(&server_details, 5.0f, 0x0, &server_details);
 		ui_vsplit_l(&server_details, 80.0f, &left_column, &right_column);
 
-		for (int i = 0; i < 4; i++)
+		for (unsigned int i = 0; i < sizeof(labels) / sizeof(labels[0]); i++)
 		{
 			ui_hsplit_t(&left_column, 15.0f, &row, &left_column);
 			ui_do_label(&row, labels[i], font_size, -1);
@@ -452,6 +464,12 @@ void MENUS::render_serverbrowser_serverdetail(RECT view)
 
 		char temp[16];
 
+		str_format(temp, sizeof(temp), "%s", selected_server->flags & SRVFLAG_TUNED ? "non-standard" : "standard");
+
+		ui_hsplit_t(&right_column, 15.0f, &row, &right_column);
+		ui_do_label(&row, temp, font_size, -1);
+
+
 		if(selected_server->progression < 0)
 			str_format(temp, sizeof(temp), "N/A");
 		else
diff --git a/src/game/server/hooks.cpp b/src/game/server/hooks.cpp
index 8d37ed81..b3425694 100644
--- a/src/game/server/hooks.cpp
+++ b/src/game/server/hooks.cpp
@@ -33,6 +33,16 @@ void send_tuning_params(int cid)
 	*/
 }
 
+int mods_is_tuned()
+{
+	TUNING_PARAMS standard_tuning;
+	
+	if (memcmp(&standard_tuning, &tuning, sizeof(TUNING_PARAMS)) != 0)
+		return 1;
+	else
+		return 0;
+}
+
 // Server hooks
 void mods_client_direct_input(int client_id, void *input)
 {