diff --git a/data/po/supertuxkart.pot b/data/po/supertuxkart.pot index 65304a31b..e985a284f 100644 --- a/data/po/supertuxkart.pot +++ b/data/po/supertuxkart.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: supertuxkart\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-07-19 14:21+0800\n" +"POT-Creation-Date: 2020-07-29 01:02+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -334,7 +334,7 @@ msgstr "" #: src/states_screens/dialogs/add_device_dialog.cpp:125 #: src/states_screens/dialogs/addons_loading.cpp:213 #: src/states_screens/dialogs/press_a_key_dialog.cpp:45 -#: src/states_screens/online/register_screen.cpp:132 +#: src/states_screens/online/register_screen.cpp:130 #: src/states_screens/options/user_screen.cpp:128 msgid "Cancel" msgstr "" @@ -1725,20 +1725,20 @@ msgstr "" #. I18N: ./data/gui/screens/online/networking_lobby.stkgui #. I18N: In networking lobby #. I18N: In the networking lobby -#: src/states_screens/online/networking_lobby.cpp:197 +#: src/states_screens/online/networking_lobby.cpp:201 msgid "Lobby" msgstr "" #. I18N: ./data/gui/screens/online/networking_lobby.stkgui #. I18N: In the network lobby -#: src/states_screens/online/networking_lobby.cpp:183 +#: src/states_screens/online/networking_lobby.cpp:186 msgid "Start race" msgstr "" #. I18N: ./data/gui/screens/online/networking_lobby.stkgui #. I18N: In the network lobby #. I18N: In networking lobby to configuration server settings -#: src/states_screens/online/networking_lobby.cpp:191 +#: src/states_screens/online/networking_lobby.cpp:194 msgid "Configuration" msgstr "" @@ -2737,20 +2737,20 @@ msgid "" "created." msgstr "" -#: src/graphics/irr_driver.cpp:631 +#: src/graphics/irr_driver.cpp:613 msgid "Video recording started." msgstr "" -#: src/graphics/irr_driver.cpp:638 +#: src/graphics/irr_driver.cpp:620 #, c-format msgid "Video saved in \"%s\"." msgstr "" -#: src/graphics/irr_driver.cpp:642 +#: src/graphics/irr_driver.cpp:624 msgid "Encoding progress:" msgstr "" -#: src/graphics/irr_driver.cpp:1863 src/graphics/irr_driver.cpp:1868 +#: src/graphics/irr_driver.cpp:1845 src/graphics/irr_driver.cpp:1850 #, c-format msgid "FPS: %d/%d/%d - %d KTris, Ping: %dms" msgstr "" @@ -2787,10 +2787,10 @@ msgstr "" #: src/guiengine/widgets/player_kart_widget.cpp:758 #: src/karts/controller/local_player_controller.cpp:446 #: src/karts/controller/player_controller.cpp:413 -#: src/network/protocols/client_lobby.cpp:816 +#: src/network/protocols/client_lobby.cpp:817 #: src/states_screens/dialogs/splitscreen_player_dialog.cpp:121 #: src/states_screens/race_result_gui.cpp:1421 -#: src/states_screens/race_result_gui.cpp:1479 +#: src/states_screens/race_result_gui.cpp:1482 #, c-format msgid "%s (handicapped)" msgstr "" @@ -3395,12 +3395,12 @@ msgstr "" msgid "Right trigger" msgstr "" -#: src/input/input_manager.cpp:986 +#: src/input/input_manager.cpp:985 #, c-format msgid "Ignoring '%s'. You needed to join earlier to play!" msgstr "" -#: src/input/input_manager.cpp:1023 +#: src/input/input_manager.cpp:1022 msgid "Only the Game Master may act at this point!" msgstr "" @@ -3456,7 +3456,7 @@ msgid "You finished the race!" msgstr "" #. I18N: Message shown in game to tell player left the game in network -#: src/karts/kart_rewinder.cpp:126 src/network/protocols/client_lobby.cpp:1114 +#: src/karts/kart_rewinder.cpp:126 src/network/protocols/client_lobby.cpp:1115 #, c-format msgid "%s left the game." msgstr "" @@ -3595,12 +3595,12 @@ msgid "You were kicked: Ping too high." msgstr "" #: src/network/protocols/client_lobby.cpp:255 -#: src/network/protocols/client_lobby.cpp:856 +#: src/network/protocols/client_lobby.cpp:857 msgid "Bad network connection is detected." msgstr "" #: src/network/protocols/client_lobby.cpp:420 -#: src/network/protocols/server_lobby.cpp:3629 +#: src/network/protocols/server_lobby.cpp:3636 msgid "Bot" msgstr "" @@ -3626,7 +3626,7 @@ msgstr "" #. I18N: In server info dialog #: src/network/protocols/client_lobby.cpp:688 #: src/states_screens/dialogs/server_info_dialog.cpp:84 -#: src/states_screens/race_result_gui.cpp:1779 +#: src/states_screens/race_result_gui.cpp:1785 #, c-format msgid "Difficulty: %s" msgstr "" @@ -3673,90 +3673,90 @@ msgstr "" #. I18N: Display when all players are in red or blue team, which the race #. will not be allowed to start -#: src/network/protocols/client_lobby.cpp:848 +#: src/network/protocols/client_lobby.cpp:849 msgid "All players joined red or blue team." msgstr "" #. I18N: Display when a player is allow to control the server -#: src/network/protocols/client_lobby.cpp:868 +#: src/network/protocols/client_lobby.cpp:869 msgid "You are now the owner of server." msgstr "" -#: src/network/protocols/client_lobby.cpp:911 +#: src/network/protocols/client_lobby.cpp:912 msgid "Connection refused: Server is busy." msgstr "" -#: src/network/protocols/client_lobby.cpp:916 +#: src/network/protocols/client_lobby.cpp:917 msgid "Connection refused: You are banned from the server." msgstr "" -#: src/network/protocols/client_lobby.cpp:930 +#: src/network/protocols/client_lobby.cpp:931 msgid "Connection refused: Server password is incorrect." msgstr "" -#: src/network/protocols/client_lobby.cpp:934 +#: src/network/protocols/client_lobby.cpp:935 msgid "Connection refused: Game data is incompatible." msgstr "" -#: src/network/protocols/client_lobby.cpp:938 +#: src/network/protocols/client_lobby.cpp:939 msgid "Connection refused: Server is full." msgstr "" -#: src/network/protocols/client_lobby.cpp:942 +#: src/network/protocols/client_lobby.cpp:943 msgid "Connection refused: Invalid player connecting." msgstr "" -#: src/network/protocols/client_lobby.cpp:970 +#: src/network/protocols/client_lobby.cpp:971 msgid "Failed to start the network game." msgstr "" #. I18N: Error message shown if live join or spectate failed in network -#: src/network/protocols/client_lobby.cpp:1183 +#: src/network/protocols/client_lobby.cpp:1184 msgid "The game has ended, you can't live join or spectate anymore." msgstr "" #. I18N: Error message shown if live join failed in network -#: src/network/protocols/client_lobby.cpp:1187 +#: src/network/protocols/client_lobby.cpp:1188 msgid "No remaining place in the arena - live join disabled." msgstr "" #. I18N: Error message shown if only 1 player remains in network -#: src/network/protocols/client_lobby.cpp:1191 +#: src/network/protocols/client_lobby.cpp:1192 msgid "Only 1 player remaining, returning to lobby." msgstr "" -#: src/network/protocols/client_lobby.cpp:1197 +#: src/network/protocols/client_lobby.cpp:1198 msgid "Server owner quit the game." msgstr "" #. I18N: Status shown to player when he will be spectating the next game -#: src/network/protocols/client_lobby.cpp:1201 +#: src/network/protocols/client_lobby.cpp:1202 msgid "You will be spectating the next game." msgstr "" #. I18N: Show when player join red team of the started game in #. network -#: src/network/protocols/client_lobby.cpp:1369 +#: src/network/protocols/client_lobby.cpp:1370 #, c-format msgid "%s joined the red team." msgstr "" #. I18N: Show when player join blue team of the started game in #. network -#: src/network/protocols/client_lobby.cpp:1375 +#: src/network/protocols/client_lobby.cpp:1376 #, c-format msgid "%s joined the blue team." msgstr "" #. I18N: Show when player join the started game in network -#: src/network/protocols/client_lobby.cpp:1381 +#: src/network/protocols/client_lobby.cpp:1382 #, c-format msgid "%s joined the game." msgstr "" #. I18N: Message shown in game to tell the player it's possible to change #. the camera target in spectate mode of network -#: src/network/protocols/client_lobby.cpp:1536 +#: src/network/protocols/client_lobby.cpp:1537 #, c-format msgid "" "Press <%s> or <%s> to change the targeted player, <%s> or <%s> for the " @@ -3764,7 +3764,7 @@ msgid "" msgstr "" #. I18N: Tell player he has successfully report this named player -#: src/network/protocols/client_lobby.cpp:1552 +#: src/network/protocols/client_lobby.cpp:1553 #, c-format msgid "Successfully reported %s." msgstr "" @@ -3964,8 +3964,8 @@ msgstr "" #: src/states_screens/arenas_screen.cpp:326 #: src/states_screens/easter_egg_screen.cpp:225 #: src/states_screens/easter_egg_screen.cpp:256 -#: src/states_screens/kart_selection.cpp:935 -#: src/states_screens/kart_selection.cpp:1576 +#: src/states_screens/kart_selection.cpp:936 +#: src/states_screens/kart_selection.cpp:1577 #: src/states_screens/race_setup_screen.cpp:100 msgid "Locked : solve active challenges to gain access to more!" msgstr "" @@ -4398,12 +4398,12 @@ msgid "Current password invalid." msgstr "" #: src/states_screens/dialogs/change_password_dialog.cpp:141 -#: src/states_screens/online/register_screen.cpp:324 +#: src/states_screens/online/register_screen.cpp:322 msgid "Password has to be between 8 and 30 characters long!" msgstr "" #: src/states_screens/dialogs/change_password_dialog.cpp:148 -#: src/states_screens/online/register_screen.cpp:308 +#: src/states_screens/online/register_screen.cpp:306 msgid "Passwords don't match!" msgstr "" @@ -4413,7 +4413,7 @@ msgstr "" #: src/states_screens/dialogs/change_password_dialog.cpp:236 #: src/states_screens/dialogs/recovery_dialog.cpp:207 -#: src/states_screens/online/register_screen.cpp:389 +#: src/states_screens/online/register_screen.cpp:387 msgid "Validating info" msgstr "" @@ -4609,8 +4609,8 @@ msgid "Press any key..." msgstr "" #: src/states_screens/dialogs/race_paused_dialog.cpp:115 -#: src/states_screens/online/networking_lobby.cpp:240 -#: src/states_screens/online/networking_lobby.cpp:825 +#: src/states_screens/online/networking_lobby.cpp:244 +#: src/states_screens/online/networking_lobby.cpp:832 msgid "Chat is disabled, enable in options menu." msgstr "" @@ -4652,7 +4652,7 @@ msgstr "" #. I18N: In the Select challenge dialog #: src/states_screens/dialogs/select_challenge.cpp:72 -#: src/states_screens/race_result_gui.cpp:1769 +#: src/states_screens/race_result_gui.cpp:1775 #, c-format msgid "Laps: %i" msgstr "" @@ -4964,17 +4964,17 @@ msgstr "" msgid "Connect a keyboard or gamepad to play splitscreen multiplayer" msgstr "" -#: src/states_screens/kart_selection.cpp:911 -#: src/states_screens/kart_selection.cpp:1594 +#: src/states_screens/kart_selection.cpp:912 +#: src/states_screens/kart_selection.cpp:1595 msgid "Random Kart" msgstr "" -#: src/states_screens/kart_selection.cpp:930 +#: src/states_screens/kart_selection.cpp:931 msgid "Locked" msgstr "" -#: src/states_screens/kart_selection.cpp:1031 -#: src/states_screens/online/networking_lobby.cpp:514 +#: src/states_screens/kart_selection.cpp:1032 +#: src/states_screens/online/networking_lobby.cpp:515 msgid "" "Everyone:\n" "Press the 'Select' button to join the game" @@ -5036,23 +5036,27 @@ msgstr "" #. I18N: In the networking lobby, ready button is to allow player to tell #. server that he is ready for next game for owner less server -#: src/states_screens/online/networking_lobby.cpp:186 +#: src/states_screens/online/networking_lobby.cpp:189 msgid "Ready" msgstr "" #. I18N: Live join is displayed in networking lobby to allow players #. to join the current started in-progress game -#: src/states_screens/online/networking_lobby.cpp:189 +#: src/states_screens/online/networking_lobby.cpp:192 msgid "Live join" msgstr "" #. I18N: Spectate is displayed in networking lobby to allow players #. to join the current started in-progress game -#: src/states_screens/online/networking_lobby.cpp:194 +#: src/states_screens/online/networking_lobby.cpp:197 msgid "Spectate" msgstr "" -#: src/states_screens/online/networking_lobby.cpp:332 +#: src/states_screens/online/networking_lobby.cpp:198 +msgid "Install addon" +msgstr "" + +#: src/states_screens/online/networking_lobby.cpp:337 #, c-format msgid "Lobby (ping: %dms)" msgstr "" @@ -5060,7 +5064,7 @@ msgstr "" #. I18N: In the networking lobby, show when player is required to #. wait before the current game finish with remaining time, #. showing the current track name inside bracket -#: src/states_screens/online/networking_lobby.cpp:378 +#: src/states_screens/online/networking_lobby.cpp:383 #, c-format msgid "" "Please wait for the current game's (%s) end, estimated remaining time: %s." @@ -5068,7 +5072,7 @@ msgstr "" #. I18N: In the networking lobby, show when player is required #. to wait before the current game finish with remaining time -#: src/states_screens/online/networking_lobby.cpp:386 +#: src/states_screens/online/networking_lobby.cpp:391 #, c-format msgid "Please wait for the current game's end, estimated remaining time: %s." msgstr "" @@ -5076,31 +5080,24 @@ msgstr "" #. I18N: In the networking lobby, show when player is required #. to wait before the current game finish with progress in #. percent, showing the current track name inside bracket -#: src/states_screens/online/networking_lobby.cpp:398 +#: src/states_screens/online/networking_lobby.cpp:403 msgid "Please wait for the current game's (%s) end, estimated progress: %s%." msgstr "" #. I18N: In the networking lobby, show when player is required #. to wait before the current game finish with progress in #. percent -#: src/states_screens/online/networking_lobby.cpp:407 +#: src/states_screens/online/networking_lobby.cpp:412 msgid "Please wait for the current game's end, estimated progress: %d%." msgstr "" #. I18N: In the networking lobby, show when player is required to #. wait before the current game finish -#: src/states_screens/online/networking_lobby.cpp:415 +#: src/states_screens/online/networking_lobby.cpp:420 msgid "Please wait for the current game's end." msgstr "" -#. I18N: In the networking lobby, -#. tell user the command to install addon now -#: src/states_screens/online/networking_lobby.cpp:429 -#, c-format -msgid "Send %s in chat box to install addon now." -msgstr "" - -#: src/states_screens/online/networking_lobby.cpp:483 +#: src/states_screens/online/networking_lobby.cpp:484 #, c-format msgid "Game will start if there is more than %d player." msgid_plural "Game will start if there are more than %d players." @@ -5109,7 +5106,7 @@ msgstr[1] "" #. I18N: In the networking lobby, display the starting timeout #. for owner-less server to begin a game -#: src/states_screens/online/networking_lobby.cpp:497 +#: src/states_screens/online/networking_lobby.cpp:498 #, c-format msgid "" "Starting after %d second, or once everyone has pressed the 'Ready' button." @@ -5118,12 +5115,12 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/states_screens/online/networking_lobby.cpp:534 +#: src/states_screens/online/networking_lobby.cpp:535 #, c-format msgid "Connecting to server %s" msgstr "" -#: src/states_screens/online/networking_lobby.cpp:539 +#: src/states_screens/online/networking_lobby.cpp:540 msgid "Finding a quick play server" msgstr "" @@ -5201,48 +5198,48 @@ msgstr "" msgid "Searching" msgstr "" -#: src/states_screens/online/register_screen.cpp:133 +#: src/states_screens/online/register_screen.cpp:131 #: src/states_screens/options/user_screen.cpp:127 msgid "Exit game" msgstr "" -#: src/states_screens/online/register_screen.cpp:246 -#: src/states_screens/online/register_screen.cpp:253 +#: src/states_screens/online/register_screen.cpp:244 +#: src/states_screens/online/register_screen.cpp:251 #, c-format msgid "Could not create player '%s'." msgstr "" -#: src/states_screens/online/register_screen.cpp:270 +#: src/states_screens/online/register_screen.cpp:268 msgid "User name cannot be empty." msgstr "" -#: src/states_screens/online/register_screen.cpp:312 +#: src/states_screens/online/register_screen.cpp:310 msgid "Emails don't match!" msgstr "" -#: src/states_screens/online/register_screen.cpp:316 +#: src/states_screens/online/register_screen.cpp:314 msgid "Online username has to be between 3 and 30 characters long!" msgstr "" -#: src/states_screens/online/register_screen.cpp:320 +#: src/states_screens/online/register_screen.cpp:318 msgid "Online username must not start with a number!" msgstr "" -#: src/states_screens/online/register_screen.cpp:328 +#: src/states_screens/online/register_screen.cpp:326 msgid "Email has to be between 5 and 254 characters long!" msgstr "" -#: src/states_screens/online/register_screen.cpp:334 +#: src/states_screens/online/register_screen.cpp:332 msgid "Email is invalid!" msgstr "" -#: src/states_screens/online/register_screen.cpp:397 +#: src/states_screens/online/register_screen.cpp:395 msgid "" "You will receive an email with further instructions regarding account " "activation. Please be patient and be sure to check your spam folder." msgstr "" -#: src/states_screens/online/register_screen.cpp:436 +#: src/states_screens/online/register_screen.cpp:434 msgid "Internet access is disabled, please enable it in the options" msgstr "" @@ -5851,30 +5848,30 @@ msgstr "" #. I18N: indicates a player that scored in their own goal in result screen #: src/states_screens/race_result_gui.cpp:1427 -#: src/states_screens/race_result_gui.cpp:1485 +#: src/states_screens/race_result_gui.cpp:1488 msgid "(Own Goal)" msgstr "" -#: src/states_screens/race_result_gui.cpp:1560 +#: src/states_screens/race_result_gui.cpp:1566 #, c-format msgid "Track %i/%i" msgstr "" -#: src/states_screens/race_result_gui.cpp:1644 +#: src/states_screens/race_result_gui.cpp:1650 msgid "Grand Prix progress:" msgstr "" -#: src/states_screens/race_result_gui.cpp:1690 +#: src/states_screens/race_result_gui.cpp:1696 msgid "Highscores" msgstr "" -#: src/states_screens/race_result_gui.cpp:1793 +#: src/states_screens/race_result_gui.cpp:1799 #, c-format msgid "Best lap time: %s" msgstr "" #. I18N: is used to indicate who has the bast laptime (best laptime "by kart_name") -#: src/states_screens/race_result_gui.cpp:1807 +#: src/states_screens/race_result_gui.cpp:1813 #, c-format msgid "by %s" msgstr "" diff --git a/src/states_screens/online/networking_lobby.cpp b/src/states_screens/online/networking_lobby.cpp index 834d2d9bd..2ed6f184a 100644 --- a/src/states_screens/online/networking_lobby.cpp +++ b/src/states_screens/online/networking_lobby.cpp @@ -48,6 +48,7 @@ #include "network/server.hpp" #include "network/stk_host.hpp" #include "network/network_timer_synchronizer.hpp" +#include "states_screens/dialogs/addons_pack.hpp" #include "states_screens/dialogs/splitscreen_player_dialog.hpp" #include "states_screens/dialogs/network_player_dialog.hpp" #include "states_screens/dialogs/server_configuration_dialog.hpp" @@ -85,7 +86,7 @@ NetworkingLobby::NetworkingLobby() : Screen("online/networking_lobby.stkgui") m_send_button = NULL; m_icon_bank = NULL; m_reload_server_info = false; - m_displayed_addon_install_cmd = false; + m_addon_install = NULL; // Allows one to update chat and counter even if dialog window is opened setUpdateInBackground(true); @@ -139,6 +140,8 @@ void NetworkingLobby::loadedFromFile() (file_manager->getAsset(FileManager::GUI_ICON, "screen_other.png")); video::ITexture* icon_6 = irr_driver->getTexture (file_manager->getAsset(FileManager::GUI_ICON, "robot.png")); + m_addon_texture = irr_driver->getTexture + (file_manager->getAsset(FileManager::GUI_ICON, "package-update.png")); m_icon_bank->addTextureAsSprite(icon_1); m_icon_bank->addTextureAsSprite(icon_2); m_icon_bank->addTextureAsSprite(icon_3); @@ -173,7 +176,7 @@ void NetworkingLobby::init() m_allow_change_team = false; m_has_auto_start_in_server = false; m_client_live_joinable = false; - m_displayed_addon_install_cmd = false; + m_addon_install = NULL; m_ping_update_timer = 0; m_start_timeout = std::numeric_limits::max(); m_cur_starting_timer = std::numeric_limits::max(); @@ -192,6 +195,7 @@ void NetworkingLobby::init() //I18N: Spectate is displayed in networking lobby to allow players //to join the current started in-progress game m_spectate_text = _("Spectate"); + m_install_addon_text = _("Install addon"); //I18N: In the networking lobby m_header->setText(_("Lobby"), false); @@ -297,6 +301,7 @@ void NetworkingLobby::updateServerInfos() // ---------------------------------------------------------------------------- void NetworkingLobby::onUpdate(float delta) { + m_addon_install = NULL; if (NetworkConfig::get()->isServer() || !STKHost::existHost()) return; @@ -415,22 +420,6 @@ void NetworkingLobby::onUpdate(float delta) msg = _("Please wait for the current game's end."); } -#ifndef SERVER_ONLY - Addon* addon = addons_manager->getAddon( - Addon::createAddonId(missing_addon_track_id)); - if (addon && - !m_displayed_addon_install_cmd) - { - m_displayed_addon_install_cmd = true; - core::stringw cmd = L"/installaddon "; - cmd += missing_addon_track_id.c_str(); - //I18N: In the networking lobby, - //tell user the command to install addon now - core::stringw info = _("Send %s in chat box to install addon now.", cmd); - addMoreServerInfo(info); - } -#endif - // You can live join or spectator if u have the current play track // and network timer is synchronized, and no game protocols exist bool no_gep = !RaceEventManager::get() || @@ -447,6 +436,21 @@ void NetworkingLobby::onUpdate(float delta) m_timeout_message->setText(msg, false); m_cur_starting_timer = std::numeric_limits::max(); +#ifndef SERVER_ONLY + if (!GUIEngine::ModalDialog::isADialogActive() && + !ScreenKeyboard::isActive()) + { + m_addon_install = addons_manager->getAddon( + Addon::createAddonId(missing_addon_track_id)); + if (m_addon_install) + { + m_config_button->setLabel(m_install_addon_text); + m_config_button->setImage(m_addon_texture); + m_config_button->setVisible(true); + return; + } + } +#endif if (m_client_live_joinable) { @@ -674,6 +678,13 @@ void NetworkingLobby::eventCallback(Widget* widget, const std::string& name, } else if (name == m_config_button->m_properties[PROP_ID]) { +#ifndef SERVER_ONLY + if (m_addon_install) + { + AddonsPack::install(m_addon_install->getDirName()); + return; + } +#endif auto cl = LobbyProtocol::get(); if (m_client_live_joinable && cl) { diff --git a/src/states_screens/online/networking_lobby.hpp b/src/states_screens/online/networking_lobby.hpp index 4f9b42f28..7ecb01791 100644 --- a/src/states_screens/online/networking_lobby.hpp +++ b/src/states_screens/online/networking_lobby.hpp @@ -25,6 +25,7 @@ #include #include +class Addon; class InputDevice; class Server; enum KartTeam : int8_t; @@ -74,7 +75,7 @@ private: int m_server_info_height; core::stringw m_start_text, m_ready_text, m_live_join_text, - m_configuration_text, m_spectate_text; + m_configuration_text, m_spectate_text, m_install_addon_text; float m_start_timeout; int64_t m_cur_starting_timer; @@ -82,10 +83,12 @@ private: bool m_allow_change_team, m_has_auto_start_in_server, m_server_configurable, m_client_live_joinable, - m_reload_server_info, m_displayed_addon_install_cmd; + m_reload_server_info; + Addon* m_addon_install; video::ITexture* m_config_texture; video::ITexture* m_spectate_texture; + video::ITexture* m_addon_texture; GUIEngine::IconButtonWidget* m_back_widget; GUIEngine::LabelWidget* m_header;