about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlfred Eriksson <somerunce@gmail.com>2009-01-11 10:40:14 +0000
committerAlfred Eriksson <somerunce@gmail.com>2009-01-11 10:40:14 +0000
commit39a12060d68b1a5169d643a8c6f56df3d82ac4c1 (patch)
treebb104b9b446a00687e533924b5765ff3918780cc
parent371e8623161095b8f74d51d37f3de368b5cd584c (diff)
downloadzcatch-39a12060d68b1a5169d643a8c6f56df3d82ac4c1.tar.gz
zcatch-39a12060d68b1a5169d643a8c6f56df3d82ac4c1.zip
removed the tuning filtering and warning. modded servers can use tuning for free. added pure server checking - ctf, dm and tdm gametypes are not allowed to have different tuning.
-rw-r--r--datasrc/content.py2
-rw-r--r--src/engine/client/ec_srvbrowse.c4
-rw-r--r--src/engine/e_config_variables.h2
-rw-r--r--src/engine/e_if_mods.h3
-rw-r--r--src/engine/e_if_other.h2
-rw-r--r--src/engine/server/es_server.c2
-rw-r--r--src/game/client/components/hud.cpp19
-rw-r--r--src/game/client/components/hud.hpp1
-rw-r--r--src/game/client/components/menus.cpp16
-rw-r--r--src/game/client/components/menus.hpp1
-rw-r--r--src/game/client/components/menus_browser.cpp30
-rw-r--r--src/game/client/gameclient.cpp23
-rw-r--r--src/game/client/gameclient.hpp8
-rw-r--r--src/game/server/hooks.cpp10
-rw-r--r--src/game/variables.hpp2
15 files changed, 63 insertions, 62 deletions
diff --git a/datasrc/content.py b/datasrc/content.py
index 1566779d..266cfe57 100644
--- a/datasrc/content.py
+++ b/datasrc/content.py
@@ -361,7 +361,7 @@ container.sprites.Add(Sprite("blank2", set_emoticons, 3, 3, 1, 1))
 
 container.sprites.Add(Sprite("browse_lock", set_browseicons, 0,0,1,1))
 container.sprites.Add(Sprite("browse_heart", set_browseicons, 1,0,1,1))
-container.sprites.Add(Sprite("browse_tuned", set_browseicons, 2,0,1,1))
+container.sprites.Add(Sprite("browse_pure", set_browseicons, 2,0,1,1))
 
 anim = Animation("base")
 anim.body.frames.Add(AnimKeyframe(0, 0, -4, 0))
diff --git a/src/engine/client/ec_srvbrowse.c b/src/engine/client/ec_srvbrowse.c
index cf36f62b..99389c1d 100644
--- a/src/engine/client/ec_srvbrowse.c
+++ b/src/engine/client/ec_srvbrowse.c
@@ -164,7 +164,7 @@ static void client_serverbrowse_filter()
 			filtered = 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)
+		else if(config.b_filter_pure && (strcmp(serverlist[i]->info.gametype, "DM") != 0 && strcmp(serverlist[i]->info.gametype, "TDM") != 0 && strcmp(serverlist[i]->info.gametype, "CTF") != 0))
 			filtered = 1;
 		else if(config.b_filter_ping < serverlist[i]->info.latency)
 			filtered = 1;
@@ -228,7 +228,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_pure<<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 c4ccfd3d..69002a50 100644
--- a/src/engine/e_config_variables.h
+++ b/src/engine/e_config_variables.h
@@ -19,7 +19,7 @@ MACRO_CONFIG_INT(b_filter_empty, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter o
 MACRO_CONFIG_INT(b_filter_pw, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out password protected servers in browser")
 MACRO_CONFIG_INT(b_filter_ping, 999, 0, 999, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Ping to filter by in the server browser")
 MACRO_CONFIG_STR(b_filter_gametype, 128, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Game types to filter")
-MACRO_CONFIG_INT(b_filter_tuned, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out tuned servers in browser")
+MACRO_CONFIG_INT(b_filter_pure, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out non-pure servers in browser")
 MACRO_CONFIG_INT(b_filter_compatversion, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out non-compatible servers in browser")
 
 MACRO_CONFIG_INT(b_sort, 0, 0, 256, CFGFLAG_SAVE|CFGFLAG_CLIENT, "")
diff --git a/src/engine/e_if_mods.h b/src/engine/e_if_mods.h
index 31bf075f..08d0ec37 100644
--- a/src/engine/e_if_mods.h
+++ b/src/engine/e_if_mods.h
@@ -165,7 +165,4 @@ 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 76e86b3e..5c839750 100644
--- a/src/engine/e_if_other.h
+++ b/src/engine/e_if_other.h
@@ -31,8 +31,6 @@ enum
 enum
 {
 	SRVFLAG_PASSWORD = 0x1,
-	SRVFLAG_TUNED = 0x2,
-	SRVFLAG_MOD = 0x4
 };
 
 /*
diff --git a/src/engine/server/es_server.c b/src/engine/server/es_server.c
index 0fe6562a..d6b986a5 100644
--- a/src/engine/server/es_server.c
+++ b/src/engine/server/es_server.c
@@ -859,8 +859,6 @@ static void server_send_serverinfo(NETADDR *addr, int token)
 	i = 0;
 	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/hud.cpp b/src/game/client/components/hud.cpp
index 697e75bd..65b1728e 100644
--- a/src/game/client/components/hud.cpp
+++ b/src/game/client/components/hud.cpp
@@ -167,24 +167,6 @@ void HUD::render_connectionwarning()
 	}
 }
 
-void HUD::render_tunewarning()
-{
-	TUNING_PARAMS standard_tuning;
-
-	// render warning about non standard tuning
-	bool flash = time_get()/(time_freq()/2)%2 == 0;
-	if(config.cl_warning_tuning && memcmp(&standard_tuning, &gameclient.tuning, sizeof(TUNING_PARAMS)) != 0)
-	{
-		const char *text = "Warning! Server is running non-standard tuning.";
-		if(flash)
-			gfx_text_color(1,0.4f,0.4f,1.0f);
-		else
-			gfx_text_color(0.75f,0.2f,0.2f,1.0f);
-		gfx_text(0x0, 5, 40, 6, text, -1);
-		gfx_text_color(1,1,1,1);
-	}
-}		
-
 void HUD::render_teambalancewarning()
 {
 	// render prompt about team-balance
@@ -307,7 +289,6 @@ void HUD::on_render()
 	render_fps();
 	if(client_state() != CLIENTSTATE_DEMOPLAYBACK)
 		render_connectionwarning();
-	render_tunewarning();
 	render_teambalancewarning();
 	render_voting();
 	render_cursor();
diff --git a/src/game/client/components/hud.hpp b/src/game/client/components/hud.hpp
index 3ec102f1..41fa0ff2 100644
--- a/src/game/client/components/hud.hpp
+++ b/src/game/client/components/hud.hpp
@@ -8,7 +8,6 @@ class HUD : public COMPONENT
 	
 	void render_fps();
 	void render_connectionwarning();
-	void render_tunewarning();
 	void render_teambalancewarning();
 	void render_voting();
 	void render_healthandammo();
diff --git a/src/game/client/components/menus.cpp b/src/game/client/components/menus.cpp
index 4fb652d9..3122a3bd 100644
--- a/src/game/client/components/menus.cpp
+++ b/src/game/client/components/menus.cpp
@@ -761,6 +761,13 @@ int MENUS::render()
 			button_text = "Ok";
 			extra_align = -1;
 		}
+		else if(popup == POPUP_PURE)
+		{
+			title = "Disconnected";
+			extra_text = "The server is running a non-standard tuning on a pure game mode.";
+			button_text = "Ok";
+			extra_align = -1;
+		}
 		else if(popup == POPUP_PASSWORD)
 		{
 			title = "Password Error";
@@ -996,6 +1003,13 @@ void MENUS::on_render()
 		render_demoplayer(screen);
 	}
 	
+	if(client_state() == CLIENTSTATE_ONLINE && gameclient.servermode == gameclient.SERVERMODE_PUREMOD)
+	{
+		client_disconnect();
+		set_active(true);
+		popup = POPUP_PURE;
+	}
+	
 	if(!is_active())
 	{
 		escape_pressed = false;
@@ -1003,7 +1017,7 @@ void MENUS::on_render()
 		num_inputevents = 0;
 		return;
 	}
-		
+	
 	// update colors
 	vec3 rgb = hsl_to_rgb(vec3(config.ui_color_hue/255.0f, config.ui_color_sat/255.0f, config.ui_color_lht/255.0f));
 	gui_color = vec4(rgb.r, rgb.g, rgb.b, config.ui_color_alpha/255.0f);
diff --git a/src/game/client/components/menus.hpp b/src/game/client/components/menus.hpp
index ab4d5303..8a50c122 100644
--- a/src/game/client/components/menus.hpp
+++ b/src/game/client/components/menus.hpp
@@ -68,6 +68,7 @@ class MENUS : public COMPONENT
 		POPUP_FIRST_LAUNCH,
 		POPUP_CONNECTING,
 		POPUP_DISCONNECTED,
+		POPUP_PURE,
 		POPUP_PASSWORD,
 		POPUP_QUIT, 
 	};
diff --git a/src/game/client/components/menus_browser.cpp b/src/game/client/components/menus_browser.cpp
index 5f328e58..bad38b76 100644
--- a/src/game/client/components/menus_browser.cpp
+++ b/src/game/client/components/menus_browser.cpp
@@ -46,7 +46,7 @@ void MENUS::render_serverbrowser_serverlist(RECT view)
 		SPACER=2,
 		
 		COL_FLAG_LOCK=0,
-		COL_FLAG_TUNED,
+		COL_FLAG_PURE,
 		COL_FLAG_FAV,
 		COL_NAME,
 		COL_GAMETYPE,
@@ -60,7 +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_PURE,	-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}},
@@ -161,16 +161,17 @@ void MENUS::render_serverbrowser_serverlist(RECT view)
 
 	selected_index = -1;
 
-	for (int i = 0; i < num_servers; i++)
+	/*for (int i = 0; i < num_servers; i++)
 	{
 		SERVER_INFO *item = client_serverbrowse_sorted_get(i);
 		num_players += item->num_players;
-	}
+	}*/
 	
 	for (int i = 0; i < num_servers; i++)
 	{
 		int item_index = i;
 		SERVER_INFO *item = client_serverbrowse_sorted_get(item_index);
+		num_players += item->num_players;
 		RECT row;
         RECT select_hit_box;
 			
@@ -226,10 +227,10 @@ void MENUS::render_serverbrowser_serverlist(RECT view)
 				if(item->flags & SRVFLAG_PASSWORD)
 					ui_draw_browse_icon(SPRITE_BROWSE_LOCK, &button);
 			}
-			else if(id == COL_FLAG_TUNED)
+			else if(id == COL_FLAG_PURE)
 			{
-				if(item->flags & SRVFLAG_TUNED)
-					ui_draw_browse_icon(SPRITE_BROWSE_TUNED, &button);
+				if(strncmp(item->gametype, "DM", 2) == 0 || strncmp(item->gametype, "TDM", 3) == 0 || strncmp(item->gametype, "CTF", 3) == 0)
+					ui_draw_browse_icon(SPRITE_BROWSE_PURE, &button);
 			}
 			else if(id == COL_FLAG_FAV)
 			{
@@ -345,10 +346,10 @@ void MENUS::render_serverbrowser_filters(RECT view)
 	ui_hsplit_t(&view, 20.0f, &button, &view);
 	if (ui_do_button((char *)&config.b_filter_compatversion, "Compatible Version", config.b_filter_compatversion, &button, ui_draw_checkbox, 0))
 		config.b_filter_compatversion ^= 1;
-
+	
 	ui_hsplit_t(&view, 20.0f, &button, &view);
-	if (ui_do_button((char *)&config.b_filter_tuned, "Not tuned", config.b_filter_tuned, &button, ui_draw_checkbox, 0))
-		config.b_filter_tuned ^= 1;
+	if (ui_do_button((char *)&config.b_filter_pure, "Only pure", config.b_filter_pure, &button, ui_draw_checkbox, 0))
+		config.b_filter_pure ^= 1;
 
 	ui_hsplit_t(&view, 20.0f, &button, &view);
 	ui_do_label(&button, "Game types: ", 14.0f, -1);
@@ -387,7 +388,6 @@ 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;
 	}
 }
@@ -420,7 +420,7 @@ void MENUS::render_serverbrowser_serverdetail(RECT view)
 	if (selected_server)
 	{
 		RECT row;
-		static const char *labels[] = { "Version:", "Game Type:", "Tuning:", "Progression:", "Ping:" };
+		static const char *labels[] = { "Version:", "Game Type:", "Progression:", "Ping:" };
 
 		RECT left_column;
 		RECT right_column;
@@ -457,12 +457,6 @@ 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/client/gameclient.cpp b/src/game/client/gameclient.cpp
index ec3ad78d..6b3f3492 100644
--- a/src/game/client/gameclient.cpp
+++ b/src/game/client/gameclient.cpp
@@ -1,3 +1,4 @@
+#include <string.h>
 #include <engine/e_client_interface.h>
 #include <engine/e_demorec.h>
 
@@ -214,6 +215,7 @@ void GAMECLIENT::on_init()
 	int64 end = time_get();
 	dbg_msg("", "%f.2ms", ((end-start)*1000)/(float)time_freq());
 	
+	servermode = SERVERMODE_PURE;
 }
 
 void GAMECLIENT::on_save()
@@ -273,6 +275,11 @@ void GAMECLIENT::on_connected()
 		all.components[i]->on_reset();
 	}
 	
+	SERVER_INFO current_server_info;
+	client_serverinfo(&current_server_info);
+	
+	servermode = SERVERMODE_PURE;
+	
 	// send the inital info
 	send_info(true);
 }
@@ -393,6 +400,8 @@ void GAMECLIENT::on_message(int msgtype)
 		// check for unpacking errors
 		if(msg_unpack_error())
 			return;
+		
+		servermode = SERVERMODE_PURE;
 			
 		// apply new tuning
 		tuning = new_tuning;
@@ -638,6 +647,20 @@ void GAMECLIENT::on_snapshot()
 	}
 	else
 		snap.spectate = true;
+	
+	TUNING_PARAMS standard_tuning;
+	SERVER_INFO current_server_info;
+	client_serverinfo(&current_server_info);
+	if(current_server_info.gametype[0] != '0')
+	{
+		if(strcmp(current_server_info.gametype, "DM") != 0 && strcmp(current_server_info.gametype, "TDM") != 0 && strcmp(current_server_info.gametype, "CTF") != 0)
+			servermode = SERVERMODE_MOD;
+		else if(memcmp(&standard_tuning, &tuning, sizeof(TUNING_PARAMS)) == 0)
+			servermode = SERVERMODE_PURE;
+		else
+			servermode = SERVERMODE_PUREMOD;
+	}
+	
 
 	// update render info
 	for(int i = 0; i < MAX_CLIENTS; i++)
diff --git a/src/game/client/gameclient.hpp b/src/game/client/gameclient.hpp
index e470dc09..dfd642e6 100644
--- a/src/game/client/gameclient.hpp
+++ b/src/game/client/gameclient.hpp
@@ -39,6 +39,14 @@ public:
 
 	// TODO: move this
 	TUNING_PARAMS tuning;
+	
+	enum
+	{
+		SERVERMODE_PURE=0,
+		SERVERMODE_MOD,
+		SERVERMODE_PUREMOD,
+	};
+	int servermode;
 
 	vec2 local_character_pos;
 	vec2 local_target_pos;
diff --git a/src/game/server/hooks.cpp b/src/game/server/hooks.cpp
index 64cf3407..3f8fce80 100644
--- a/src/game/server/hooks.cpp
+++ b/src/game/server/hooks.cpp
@@ -46,16 +46,6 @@ void send_tuning_params(int cid)
 	server_send_msg(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)
 {
diff --git a/src/game/variables.hpp b/src/game/variables.hpp
index 11fcc1e6..ccde5a9e 100644
--- a/src/game/variables.hpp
+++ b/src/game/variables.hpp
@@ -12,8 +12,6 @@ MACRO_CONFIG_INT(cl_showfps, 0, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Show ingame
 MACRO_CONFIG_INT(cl_airjumpindicator, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "")
 MACRO_CONFIG_INT(cl_threadsoundloading, 0, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "")
 
-
-MACRO_CONFIG_INT(cl_warning_tuning, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Warn about tuned servers")
 MACRO_CONFIG_INT(cl_warning_teambalance, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Warn about team balance")
 
 MACRO_CONFIG_INT(cl_mouse_deadzone, 300, 0, 0, CFGFLAG_CLIENT|CFGFLAG_SAVE, "")