diff --git a/data/gui/online/networking_lobby.stkgui b/data/gui/online/networking_lobby.stkgui
index 5bacbe40d..c2660c79c 100644
--- a/data/gui/online/networking_lobby.stkgui
+++ b/data/gui/online/networking_lobby.stkgui
@@ -3,9 +3,11 @@
-
+
-
+
+
+
@@ -15,13 +17,15 @@
-
-
+
+
+
+
-
+
+ I18N="In the network lobby" text="Start race"/>
diff --git a/src/network/protocols/connect_to_server.cpp b/src/network/protocols/connect_to_server.cpp
index c06e766da..bbee259d6 100644
--- a/src/network/protocols/connect_to_server.cpp
+++ b/src/network/protocols/connect_to_server.cpp
@@ -56,8 +56,8 @@ ConnectToServer::ConnectToServer(uint32_t server_id, uint32_t host_id)
m_server_id = server_id;
m_host_id = host_id;
m_quick_join = false;
- const Server *server = ServersManager::get()->getServerByID(server_id);
- m_server_address.copy(server->getAddress());
+ m_server = ServersManager::get()->getServerByID(m_server_id);
+ m_server_address.copy(m_server->getAddress());
setHandleConnections(true);
} // ConnectToServer(server, host)
@@ -239,8 +239,7 @@ void ConnectToServer::update(float dt)
{
// Shutdown STKHost (go back to online menu too)
STKHost::get()->setErrorMessage(
- _("Cannot connect to server with address: %s.",
- m_server_address.toString().c_str()));
+ _("Cannot connect to server %s.", m_server->getName()));
STKHost::get()->requestShutdown();
}
requestTerminate();
diff --git a/src/network/protocols/connect_to_server.hpp b/src/network/protocols/connect_to_server.hpp
index 0a8c41dcd..cd86c35f8 100644
--- a/src/network/protocols/connect_to_server.hpp
+++ b/src/network/protocols/connect_to_server.hpp
@@ -25,6 +25,8 @@
#include
#include
+class Server;
+
class ConnectToServer : public Protocol
{
private:
@@ -34,6 +36,7 @@ private:
uint32_t m_host_id;
unsigned m_tried_connection = 0;
+ const Server* m_server = NULL;
/** Protocol currently being monitored. */
std::weak_ptr m_current_protocol;
bool m_quick_join;
diff --git a/src/states_screens/networking_lobby.cpp b/src/states_screens/networking_lobby.cpp
index 6559f43a3..1b5178d80 100644
--- a/src/states_screens/networking_lobby.cpp
+++ b/src/states_screens/networking_lobby.cpp
@@ -26,6 +26,7 @@
#include "config/player_manager.hpp"
#include "guiengine/widgets/bubble_widget.hpp"
#include "guiengine/widgets/icon_button_widget.hpp"
+#include "guiengine/widgets/label_widget.hpp"
#include "guiengine/widgets/list_widget.hpp"
#include "guiengine/widgets/ribbon_widget.hpp"
#include "guiengine/widgets/text_box_widget.hpp"
@@ -70,10 +71,10 @@ void NetworkingLobby::loadedFromFile()
m_back_widget = getWidget("back");
assert(m_back_widget != NULL);
- m_start_button= getWidget("start");
+ m_start_button = getWidget("start");
assert(m_start_button!= NULL);
- m_text_bubble = getWidget("text");
+ m_text_bubble = getWidget("text");
assert(m_text_bubble != NULL);
m_chat_box = getWidget("chat");
@@ -82,7 +83,7 @@ void NetworkingLobby::loadedFromFile()
m_player_list = getWidget("players");
assert(m_player_list!= NULL);
- m_exit_widget = getWidget("exit");;
+ m_exit_widget = getWidget("exit");
assert(m_exit_widget != NULL);
} // loadedFromFile
@@ -90,7 +91,6 @@ void NetworkingLobby::loadedFromFile()
// ---------------------------------------------------------------------------
void NetworkingLobby::beforeAddingWidget()
{
-
} // beforeAddingWidget
// ----------------------------------------------------------------------------
@@ -121,8 +121,7 @@ void NetworkingLobby::init()
m_server_info.push_back(each_line);
}
- if(!NetworkConfig::get()->isServer())
- m_start_button->setVisible(STKHost::get()->isAuthorisedToControl());
+ m_start_button->setVisible(false);
// For now create the active player and bind it to the right
// input device.
@@ -144,7 +143,8 @@ void NetworkingLobby::onUpdate(float delta)
{
const core::stringw connect_msg = StringUtils::loadingDots(
_("Connecting to server %s", m_server_name));
- m_text_bubble->setText(connect_msg);
+ m_text_bubble->setText(connect_msg, true);
+ m_start_button->setVisible(false);
}
else
{
@@ -154,12 +154,12 @@ void NetworkingLobby::onUpdate(float delta)
total_msg += string;
total_msg += L"\n";
}
- m_text_bubble->setText(total_msg);
+ m_text_bubble->setText(total_msg, true);
}
- if(NetworkConfig::get()->isClient())
+ if (NetworkConfig::get()->isClient() &&
+ STKHost::get()->isAuthorisedToControl())
{
- m_start_button->setVisible(STKHost::existHost() &&
- STKHost::get()->isAuthorisedToControl());
+ m_start_button->setVisible(true);
}
} // onUpdate
@@ -175,14 +175,23 @@ void NetworkingLobby::eventCallback(Widget* widget, const std::string& name,
return;
}
- if(name==m_start_button->m_properties[PROP_ID])
+ RibbonWidget* ribbon = dynamic_cast(widget);
+ if (ribbon == NULL) return;
+ const std::string &selection =
+ ribbon->getSelectionIDString(PLAYER_ID_GAME_MASTER);
+
+ if (selection == m_exit_widget->m_properties[PROP_ID])
{
- if(NetworkConfig::get()->isServer())
+ StateManager::get()->escapePressed();
+ }
+ else if (selection == m_start_button->m_properties[PROP_ID])
+ {
+ if (NetworkConfig::get()->isServer())
{
auto slrp = LobbyProtocol::get();
slrp->startSelection();
}
- else // client
+ else
{
// Send a message to the server to start
NetworkString start(PROTOCOL_LOBBY_ROOM);
@@ -191,16 +200,6 @@ void NetworkingLobby::eventCallback(Widget* widget, const std::string& name,
STKHost::get()->sendToServer(&start, true);
}
}
-
- RibbonWidget* ribbon = dynamic_cast(widget);
- if (ribbon == NULL) return;
- const std::string &selection =
- ribbon->getSelectionIDString(PLAYER_ID_GAME_MASTER);
-
- if (selection == m_exit_widget->m_properties[PROP_ID])
- {
- StateManager::get()->escapePressed();
- }
} // eventCallback
// ----------------------------------------------------------------------------
diff --git a/src/states_screens/networking_lobby.hpp b/src/states_screens/networking_lobby.hpp
index c95daae32..0a60f2358 100644
--- a/src/states_screens/networking_lobby.hpp
+++ b/src/states_screens/networking_lobby.hpp
@@ -25,9 +25,9 @@ class Server;
namespace GUIEngine
{
class Widget;
- class ListWidget;
+ class LabelWidget;
+ class ListWidget;
class IconButtonWidget;
- class BubbleWidget;
class TextBoxWidget;
}
@@ -49,7 +49,7 @@ private:
std::vector m_server_info;
GUIEngine::IconButtonWidget * m_back_widget;
- GUIEngine::BubbleWidget * m_text_bubble;
+ GUIEngine::LabelWidget * m_text_bubble;
GUIEngine::IconButtonWidget * m_exit_widget;
GUIEngine::IconButtonWidget *m_start_button;
GUIEngine::ListWidget *m_player_list;