[Orxonox-commit 5674] r10334 - in code/branches/multiplayerFS15: data/gui/scripts src/libraries/network src/libraries/network/packet
frovelli at orxonox.net
frovelli at orxonox.net
Thu Mar 26 13:38:24 CET 2015
Author: frovelli
Date: 2015-03-26 13:38:24 +0100 (Thu, 26 Mar 2015)
New Revision: 10334
Modified:
code/branches/multiplayerFS15/data/gui/scripts/MultiplayerMenu.lua
code/branches/multiplayerFS15/src/libraries/network/LANDiscovery.cc
code/branches/multiplayerFS15/src/libraries/network/LANDiscovery.h
code/branches/multiplayerFS15/src/libraries/network/ServerList.cc
code/branches/multiplayerFS15/src/libraries/network/packet/ServerInformation.cc
code/branches/multiplayerFS15/src/libraries/network/packet/ServerInformation.h
Log:
Added serverlist ping display in LAN
Modified: code/branches/multiplayerFS15/data/gui/scripts/MultiplayerMenu.lua
===================================================================
--- code/branches/multiplayerFS15/data/gui/scripts/MultiplayerMenu.lua 2015-03-25 19:58:23 UTC (rev 10333)
+++ code/branches/multiplayerFS15/data/gui/scripts/MultiplayerMenu.lua 2015-03-26 12:38:24 UTC (rev 10334)
@@ -92,6 +92,7 @@
local index = 0
local servername = ""
local serverip = ""
+ local serverrtt = ""
while true do
servername = discovery:getServerListItemName(index)
if servername == "" then
@@ -101,12 +102,14 @@
if serverip == "" then
break
end
- table.insert(P.serverList, {servername, serverip})
+ serverrtt = discovery:getServerListItemRTT(index)
+
+ table.insert(P.serverList, {servername, serverip, serverrtt})
index = index + 1
end
index = 1
for k,v in pairs(P.serverList) do
- local item = CEGUI.createListboxTextItem( v[1] .. ": " .. v[2] )
+ local item = CEGUI.createListboxTextItem( v[1] .. ": " .. v[2] .. " Ping: " .. v[3] .."ms" )
item:setID(index)
index = index + 1
item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
@@ -124,6 +127,7 @@
local index = 0
local servername = ""
local serverip = ""
+ local serverrtt = ""
while true do
servername = discovery:getServerListItemName(index)
if servername == "" then
@@ -133,12 +137,14 @@
if serverip == "" then
break
end
- table.insert(P.serverList, {servername, serverip})
+ serverrtt = discovery:getServerListItemRTT(index)
+
+ table.insert(P.serverList, {servername, serverip, serverrtt})
index = index + 1
end
index = 1
for k,v in pairs(P.serverList) do
- local item = CEGUI.createListboxTextItem( v[1] .. ": " .. v[2] )
+ local item = CEGUI.createListboxTextItem( v[1] .. ": " .. v[2] .. " Ping: " .. v[3] .."ms" )
item:setID(index)
index = index + 1
item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
@@ -149,4 +155,3 @@
end
return P
-
Modified: code/branches/multiplayerFS15/src/libraries/network/LANDiscovery.cc
===================================================================
--- code/branches/multiplayerFS15/src/libraries/network/LANDiscovery.cc 2015-03-25 19:58:23 UTC (rev 10333)
+++ code/branches/multiplayerFS15/src/libraries/network/LANDiscovery.cc 2015-03-26 12:38:24 UTC (rev 10334)
@@ -123,5 +123,16 @@
return this->servers_[index].getServerIP();
}
+ std::string LANDiscovery::getServerListItemRTT(unsigned int index)
+ {
+ if( index >= this->servers_.size() )
+ return BLANKSTRING;
+ else{
+ uint32_t serverrtt = this->servers_[index].getServerRTT();
+ return Ogre::StringConverter::toString(serverrtt);
+ }
+ }
+
+
} // namespace orxonox
Modified: code/branches/multiplayerFS15/src/libraries/network/LANDiscovery.h
===================================================================
--- code/branches/multiplayerFS15/src/libraries/network/LANDiscovery.h 2015-03-25 19:58:23 UTC (rev 10333)
+++ code/branches/multiplayerFS15/src/libraries/network/LANDiscovery.h 2015-03-26 12:38:24 UTC (rev 10334)
@@ -32,6 +32,7 @@
#include "NetworkPrereqs.h"
#include "packet/ServerInformation.h"
#include "util/Singleton.h"
+#include <OgreStringConverter.h>
#include <vector>
@@ -50,8 +51,9 @@
void discover(); // tolua_export
std::string getServerListItemName( unsigned int index ); // tolua_export
std::string getServerListItemIP( unsigned int index ); // tolua_export
+ std::string getServerListItemRTT( unsigned int index ); // tolua_export
static LANDiscovery& getInstance(){ return Singleton<LANDiscovery>::getInstance(); } // tolua_export
-
+
private:
static LANDiscovery* singletonPtr_s;
ENetHost* host_;
Modified: code/branches/multiplayerFS15/src/libraries/network/ServerList.cc
===================================================================
--- code/branches/multiplayerFS15/src/libraries/network/ServerList.cc 2015-03-25 19:58:23 UTC (rev 10333)
+++ code/branches/multiplayerFS15/src/libraries/network/ServerList.cc 2015-03-26 12:38:24 UTC (rev 10334)
@@ -29,7 +29,7 @@
#include "ServerList.h"
namespace orxonox
-{
+{
ServerList::ServerList()
{ /* create a new list */ }
@@ -38,26 +38,26 @@
serverlist.clear();
}
- int
+ int
ServerList::addServer( packet::ServerInformation toadd,
ENetPeer *peer )
- {
+ {
ServerListElem toAdd;
toAdd.ServerInfo = toadd;
toAdd.peer = peer;
- this->serverlist.push_back( toAdd );
+ this->serverlist.push_back( toAdd );
return 0;
}
- bool
+ bool
ServerList::delServerByName( std::string name )
- {
+ {
/* get an iterator */
std::list<ServerListElem>::iterator i;
/* loop through list elements */
- for( i = serverlist.begin(); i != serverlist.end(); ++i )
+ for( i = serverlist.begin(); i != serverlist.end(); ++i )
if( (*i).ServerInfo.getServerName() == name )
{ /* found this name, remove and quit */
this->serverlist.erase( i );
@@ -67,12 +67,12 @@
}
bool ServerList::delServerByAddress( std::string address )
- {
+ {
/* get an iterator */
std::list<ServerListElem>::iterator i;
/* loop through list elements */
- for( i = serverlist.begin(); i != serverlist.end(); ++i )
+ for( i = serverlist.begin(); i != serverlist.end(); ++i )
if( (*i).ServerInfo.getServerIP() == address )
{ /* found this name, remove and quit */
this->serverlist.erase( i );
@@ -89,7 +89,7 @@
std::list<ServerListElem>::iterator i;
/* loop through list elements */
- for( i = serverlist.begin(); i != serverlist.end(); ++i )
+ for( i = serverlist.begin(); i != serverlist.end(); ++i )
if( (*i).ServerInfo.getServerIP() == address )
{ /* found the target, return it */
ServerListSearchResult res = { (*i), true };
@@ -109,9 +109,9 @@
/* iterate, return when name found */
/* loop through list elements */
- for( i = serverlist.begin(); i != serverlist.end(); ++i )
+ for( i = serverlist.begin(); i != serverlist.end(); ++i )
if( (*i).ServerInfo.getServerName() == name )
- {
+ {
ServerListSearchResult res = { (*i), true };
return res;
}
@@ -123,25 +123,25 @@
/* SORTING */
/* sort by name */
- bool sub_compare_names( ServerListElem no1,
+ bool sub_compare_names( ServerListElem no1,
ServerListElem no2 )
{ return no1.ServerInfo.getServerName() > no2.ServerInfo.getServerName(); }
void ServerList::sortByName()
- {
- this->serverlist.sort( sub_compare_names );
+ {
+ this->serverlist.sort( sub_compare_names );
}
-
+
/* sort by ping */
- bool sub_compare_pings( ServerListElem no1,
+ bool sub_compare_pings( ServerListElem no1,
ServerListElem no2 )
- {
- return no1.ServerInfo.getServerName() > no2.ServerInfo.getServerName();
+ {
+ return no1.ServerInfo.getServerRTT() > no2.ServerInfo.getServerRTT();
}
void ServerList::sortByPing()
{
- this->serverlist.sort( sub_compare_pings );
+ this->serverlist.sort( sub_compare_pings );
}
}
Modified: code/branches/multiplayerFS15/src/libraries/network/packet/ServerInformation.cc
===================================================================
--- code/branches/multiplayerFS15/src/libraries/network/packet/ServerInformation.cc 2015-03-25 19:58:23 UTC (rev 10333)
+++ code/branches/multiplayerFS15/src/libraries/network/packet/ServerInformation.cc 2015-03-26 12:38:24 UTC (rev 10334)
@@ -38,12 +38,12 @@
{
namespace packet
{
-
+
ServerInformation::ServerInformation()
{
-
+
}
-
+
ServerInformation::ServerInformation(ENetEvent* event)
{
char serverIP[64];
@@ -68,7 +68,7 @@
ServerInformation::~ServerInformation()
{
-
+
}
void ServerInformation::send(ENetPeer* peer)
@@ -80,10 +80,10 @@
saveAndIncrease(this->serverName_, temp2);
ENetPacket* packet = enet_packet_create( temp, size, 0 );
enet_peer_send(peer, 0, packet);
-
+
delete[] temp;
}
-
+
} // namespace packet
std::ostream& operator<<(std::ostream& out, const ENetAddress& address)
@@ -94,4 +94,3 @@
return out;
}
} // namespace orxonox
-
Modified: code/branches/multiplayerFS15/src/libraries/network/packet/ServerInformation.h
===================================================================
--- code/branches/multiplayerFS15/src/libraries/network/packet/ServerInformation.h 2015-03-25 19:58:23 UTC (rev 10333)
+++ code/branches/multiplayerFS15/src/libraries/network/packet/ServerInformation.h 2015-03-26 12:38:24 UTC (rev 10334)
@@ -44,14 +44,14 @@
ServerInformation();
ServerInformation(ENetEvent* event);
~ServerInformation();
-
+
void send( ENetPeer* peer );
std::string getServerIP() { return this->serverIP_; }
std::string getServerName() { return this->serverName_; }
void setServerName(std::string name) { this->serverName_ = name; }
void setServerIP( std::string IP ) { this->serverIP_ = IP; }
uint32_t getServerRTT() { return this->serverRTT_; }
-
+
private:
std::string serverName_;
std::string serverIP_;
More information about the Orxonox-commit
mailing list