Add server distance calculation
This commit is contained in:
parent
42e1873458
commit
0e2112d7f0
@ -38,6 +38,7 @@ Server::Server(const XMLNode& xml)
|
||||
m_server_id = 0;
|
||||
m_current_players = 0;
|
||||
m_max_players = 0;
|
||||
m_distance = 0.0f;
|
||||
unsigned server_data = 0;
|
||||
xml.get("game_mode", &server_data);
|
||||
m_minor_mode = NetworkConfig::get()->getLocalGameMode(server_data).first;
|
||||
@ -61,6 +62,7 @@ Server::Server(const XMLNode& xml)
|
||||
m_address.setPort(port);
|
||||
xml.get("private_port", &m_private_port);
|
||||
xml.get("password", &m_password_protected);
|
||||
xml.get("distance", &m_distance);
|
||||
m_server_owner_name = "-";
|
||||
|
||||
// Display server owner name if he's your friend or localhost
|
||||
@ -122,6 +124,7 @@ Server::Server(unsigned server_id, const core::stringw &name, int max_players,
|
||||
m_minor_mode = NetworkConfig::get()->getLocalGameMode(server_mode).first;
|
||||
m_major_mode = NetworkConfig::get()->getLocalGameMode(server_mode).second;
|
||||
m_password_protected = password_protected;
|
||||
m_distance = 0.0f;
|
||||
} // server(server_id, ...)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@ -80,6 +80,8 @@ protected:
|
||||
* for localhost or if you are friend with the server owner. */
|
||||
std::string m_server_owner_name;
|
||||
|
||||
/* WAN server only, distance based on IP latitude and longitude. */
|
||||
float m_distance;
|
||||
public:
|
||||
|
||||
/** Initialises the object from an XML node. */
|
||||
@ -125,6 +127,8 @@ public:
|
||||
// ------------------------------------------------------------------------
|
||||
const std::string& getServerOwnerName() const
|
||||
{ return m_server_owner_name; }
|
||||
// ------------------------------------------------------------------------
|
||||
float getDistance() const { return m_distance; }
|
||||
|
||||
}; // Server
|
||||
#endif // HEADER_SERVER_HPP
|
||||
|
@ -103,7 +103,11 @@ void ServerSelection::beforeAddingWidget()
|
||||
m_server_list_widget->addColumn(_("Difficulty"), 1);
|
||||
m_server_list_widget->addColumn(_("Game mode"), 1);
|
||||
if (NetworkConfig::get()->isWAN())
|
||||
{
|
||||
m_server_list_widget->addColumn(_("Server owner"), 1);
|
||||
// I18N: In server selection screen, distance to server
|
||||
m_server_list_widget->addColumn(_("Distance"), 1);
|
||||
}
|
||||
} // beforeAddingWidget
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -148,6 +152,9 @@ void ServerSelection::loadList(unsigned sort_case)
|
||||
case 4:
|
||||
return c->getServerOwnerName() > d->getServerOwnerName();
|
||||
break;
|
||||
case 5:
|
||||
return c->getDistance() > d->getDistance();
|
||||
break;
|
||||
} // switch
|
||||
assert(false);
|
||||
return false;
|
||||
@ -173,6 +180,12 @@ void ServerSelection::loadList(unsigned sort_case)
|
||||
{
|
||||
row.push_back(GUIEngine::ListWidget::ListCell(StringUtils::
|
||||
utf8ToWide(server->getServerOwnerName()), -1, 1, true));
|
||||
// I18N: In server selection screen, unknown distance to server
|
||||
core::stringw distance = _("Unknown");
|
||||
if (!(server->getDistance() < 0.0f))
|
||||
distance = StringUtils::toWString(server->getDistance());
|
||||
row.push_back(GUIEngine::ListWidget::ListCell(distance, -1, 1,
|
||||
true));
|
||||
}
|
||||
m_server_list_widget->addItem("server", row);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user