diff --git a/datasrc/content.py b/datasrc/content.py index 1566779db..266cfe576 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 cf36f62be..99389c1d8 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 c4ccfd3d9..69002a507 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 31bf075fc..08d0ec372 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 76e86b3e9..5c8397506 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 0fe6562ae..d6b986a51 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 697e75bdf..65b1728e5 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 3ec102f14..41fa0ff29 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 4fb652d91..3122a3bd1 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 ab4d5303f..8a50c1227 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 5f328e580..bad38b762 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 ec3ad78de..6b3f34923 100644 --- a/src/game/client/gameclient.cpp +++ b/src/game/client/gameclient.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -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(¤t_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(¤t_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 e470dc099..dfd642e6d 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 64cf34071..3f8fce803 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 11fcc1e6b..ccde5a9e9 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, "")