From 1a69293d37c40dd68535151953b472daaa93af98 Mon Sep 17 00:00:00 2001 From: gfgtdf Date: Sun, 22 Mar 2015 02:35:43 +0100 Subject: [PATCH] refactor gamebrowser::game_matches_filter 1) we fix indention which was previously done with spaces 2) we use boost::contains instead of std::search. --- src/game_initialization/multiplayer_lobby.cpp | 79 ++++++++++--------- 1 file changed, 41 insertions(+), 38 deletions(-) diff --git a/src/game_initialization/multiplayer_lobby.cpp b/src/game_initialization/multiplayer_lobby.cpp index ca613962e5d2..7dac26e82472 100644 --- a/src/game_initialization/multiplayer_lobby.cpp +++ b/src/game_initialization/multiplayer_lobby.cpp @@ -40,6 +40,7 @@ #include "terrain_type_data.hpp" #include +#include #include #include #include @@ -896,44 +897,46 @@ void gamebrowser::select_game(const std::string& id) { set_dirty(); } -bool gamebrowser::game_matches_filter(const game_item& i, const config& cfg) { - - if(!preferences::filter_lobby()) return true; - - if(preferences::fi_vacant_slots() && i.vacant_slots == 0) return false; - - if(preferences::fi_friends_in_game()) { - bool found_friend = false; - BOOST_FOREACH(const config &user, cfg.child_range("user")) { - if(preferences::is_friend(user["name"]) && user["game_id"] == i.id) { - found_friend = true; - break; - } - } - if(!found_friend) return false; - } - - if(!preferences::fi_text().empty()) { - bool found_match = true; - BOOST_FOREACH(const std::string& search_string, utils::split(preferences::fi_text(), ' ', utils::STRIP_SPACES)) { - - if(std::search(i.map_info.begin(), i.map_info.end(), search_string.begin(), - search_string.end(), chars_equal_insensitive) == i.map_info.end() - && - std::search(i.name.begin(), i.name.end(), search_string.begin(), - search_string.end(), chars_equal_insensitive) == i.name.end() - && - std::search(i.era_and_mod_info.begin(), i.era_and_mod_info.end(), - search_string.begin(), search_string.end(), chars_equal_insensitive) - == i.era_and_mod_info.end()) { - found_match = false; - break; - } - } - if(!found_match) return false; - } - - return true; +bool gamebrowser::game_matches_filter(const game_item& i, const config& cfg) +{ + + if(!preferences::filter_lobby()) { + return true; + } + if(preferences::fi_vacant_slots() && i.vacant_slots == 0) { + return false; + } + if(preferences::fi_friends_in_game()) { + bool found_friend = false; + BOOST_FOREACH(const config &user, cfg.child_range("user")) { + if(preferences::is_friend(user["name"]) && user["game_id"] == i.id) { + found_friend = true; + break; + } + } + if(!found_friend) { + return false; + } + } + + if(!preferences::fi_text().empty()) { + bool found_match = true; + BOOST_FOREACH(const std::string& search_string, utils::split(preferences::fi_text(), ' ', utils::STRIP_SPACES)) { + + if(!boost::contains(i.map_info, search_string, chars_equal_insensitive) && + !boost::contains(i.name, search_string, chars_equal_insensitive) && + !boost::contains(i.era_and_mod_info, search_string, chars_equal_insensitive)) { + + found_match = false; + break; + } + } + if(!found_match) { + return false; + } + } + + return true; } lobby::lobby_sorter::lobby_sorter(const config& cfg) : cfg_(cfg)