Use "and" search for server
This commit is contained in:
parent
99a4fac85e
commit
ea3215aad6
@ -75,30 +75,26 @@ Server::Server(const XMLNode& server_info) : m_supports_encrytion(true)
|
|||||||
const XMLNode* player_info = players->getNode(i);
|
const XMLNode* player_info = players->getNode(i);
|
||||||
assert(player_info->getName() == "player-info");
|
assert(player_info->getName() == "player-info");
|
||||||
std::string username;
|
std::string username;
|
||||||
std::pair<std::string, std::tuple<int, core::stringw, double, float> >
|
std::tuple<int, core::stringw, double, float> t;
|
||||||
p;
|
|
||||||
auto& t = p.second;
|
|
||||||
// Default rank and scores if none
|
// Default rank and scores if none
|
||||||
std::get<0>(t) = -1;
|
std::get<0>(t) = -1;
|
||||||
std::get<2>(t) = 2000.0;
|
std::get<2>(t) = 2000.0;
|
||||||
player_info->get("rank", &std::get<0>(t));
|
player_info->get("rank", &std::get<0>(t));
|
||||||
player_info->get("username", &username);
|
player_info->get("username", &username);
|
||||||
std::get<1>(t) = StringUtils::utf8ToWide(username);
|
std::get<1>(t) = StringUtils::utf8ToWide(username);
|
||||||
p.first = StringUtils::toLowerCase(username);
|
m_lower_case_player_names += StringUtils::toLowerCase(username);
|
||||||
player_info->get("scores", &std::get<2>(t));
|
player_info->get("scores", &std::get<2>(t));
|
||||||
float time_played = 0.0f;
|
float time_played = 0.0f;
|
||||||
player_info->get("time-played", &time_played);
|
player_info->get("time-played", &time_played);
|
||||||
std::get<3>(t) = time_played;
|
std::get<3>(t) = time_played;
|
||||||
m_players.emplace_back(std::move(p));
|
m_players.push_back(t);
|
||||||
}
|
}
|
||||||
// Sort by rank
|
// Sort by rank
|
||||||
std::sort(m_players.begin(), m_players.end(),
|
std::sort(m_players.begin(), m_players.end(),
|
||||||
[](const std::pair<std::string,
|
[](const std::tuple<int, core::stringw, double, float>& a,
|
||||||
std::tuple<int, core::stringw, double, float> >& a,
|
const std::tuple<int, core::stringw, double, float>& b)->bool
|
||||||
const std::pair<std::string,
|
|
||||||
std::tuple<int, core::stringw, double, float> >& b)->bool
|
|
||||||
{
|
{
|
||||||
return std::get<0>(a.second) < std::get<0>(b.second);
|
return std::get<0>(a) < std::get<0>(b);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Show owner name as Official right now if official server hoster account
|
// Show owner name as Official right now if official server hoster account
|
||||||
|
@ -52,6 +52,8 @@ protected:
|
|||||||
|
|
||||||
std::string m_server_owner_lower_case_name;
|
std::string m_server_owner_lower_case_name;
|
||||||
|
|
||||||
|
std::string m_lower_case_player_names;
|
||||||
|
|
||||||
uint32_t m_server_id;
|
uint32_t m_server_id;
|
||||||
uint32_t m_server_owner;
|
uint32_t m_server_owner;
|
||||||
|
|
||||||
@ -89,9 +91,9 @@ protected:
|
|||||||
|
|
||||||
bool m_game_started;
|
bool m_game_started;
|
||||||
|
|
||||||
std::vector<std::pair</*lower case username*/std::string, std::tuple<
|
std::vector<std::tuple<
|
||||||
/*rank*/int, core::stringw, /*scores*/double, /*playing time*/float
|
/*rank*/int, core::stringw, /*scores*/double, /*playing time*/float
|
||||||
> > > m_players;
|
> > m_players;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -145,9 +147,8 @@ public:
|
|||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
bool isGameStarted() const { return m_game_started; }
|
bool isGameStarted() const { return m_game_started; }
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
const std::vector<std::pair<std::string,
|
const std::vector<std::tuple<int, core::stringw, double, float> >&
|
||||||
std::tuple<int, core::stringw, double, float> > >& getPlayers() const
|
getPlayers() const { return m_players; }
|
||||||
{ return m_players; }
|
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
void setServerId(unsigned id) { m_server_id = id; }
|
void setServerId(unsigned id) { m_server_id = id; }
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
@ -158,18 +159,13 @@ public:
|
|||||||
bool searchByName(const std::string& lower_case_word)
|
bool searchByName(const std::string& lower_case_word)
|
||||||
{
|
{
|
||||||
auto list = StringUtils::split(lower_case_word, ' ', false);
|
auto list = StringUtils::split(lower_case_word, ' ', false);
|
||||||
bool server_name_found = false;
|
bool server_name_found = true;
|
||||||
for (auto& word : list)
|
for (auto& word : list)
|
||||||
{
|
{
|
||||||
server_name_found =
|
const std::string& for_search = m_lower_case_name +
|
||||||
m_lower_case_name.find(word) != std::string::npos;
|
m_lower_case_player_names;
|
||||||
if (server_name_found)
|
server_name_found = server_name_found &&
|
||||||
break;
|
for_search.find(word) != std::string::npos;
|
||||||
for (auto& p : m_players)
|
|
||||||
{
|
|
||||||
if (p.first.find(word) != std::string::npos)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return server_name_found;
|
return server_name_found;
|
||||||
}
|
}
|
||||||
|
@ -108,9 +108,8 @@ ServerInfoDialog::ServerInfoDialog(std::shared_ptr<Server> server)
|
|||||||
row.push_back(ListWidget::ListCell(_("Time played"),
|
row.push_back(ListWidget::ListCell(_("Time played"),
|
||||||
-1, 1, true));
|
-1, 1, true));
|
||||||
player_list->addItem("player", row);
|
player_list->addItem("player", row);
|
||||||
for (auto& p : players)
|
for (auto& r : players)
|
||||||
{
|
{
|
||||||
auto& r = p.second;
|
|
||||||
row.clear();
|
row.clear();
|
||||||
row.push_back(ListWidget::ListCell(
|
row.push_back(ListWidget::ListCell(
|
||||||
std::get<0>(r) == -1 ? L"-" :
|
std::get<0>(r) == -1 ? L"-" :
|
||||||
|
Loading…
Reference in New Issue
Block a user