From: <uni...@us...> - 2013-07-03 00:12:04
|
Revision: 13057 http://sourceforge.net/p/supertuxkart/code/13057 Author: unitraxx Date: 2013-07-03 00:12:00 +0000 (Wed, 03 Jul 2013) Log Message: ----------- Beginning of networking lobby. Modified Paths: -------------- main/branches/uni/src/states_screens/online_screen.cpp Added Paths: ----------- main/branches/uni/data/gui/online/lobby.stkgui main/branches/uni/src/states_screens/networking_lobby.cpp main/branches/uni/src/states_screens/networking_lobby.hpp Added: main/branches/uni/data/gui/online/lobby.stkgui =================================================================== --- main/branches/uni/data/gui/online/lobby.stkgui (rev 0) +++ main/branches/uni/data/gui/online/lobby.stkgui 2013-07-03 00:12:00 UTC (rev 13057) @@ -0,0 +1,49 @@ +<stkgui> + <div x="0" y="0" width="100%" height="100%" layout="vertical-row" > + + <header text_align="center" width="80%" align="center" I18N="In networking lobby" text="Lobby"/> + <spacer height="15" width="10"/> + <div proportion="1" x="2%" width="96%" layout="vertical-row"> + <div width="100%" proportion="2" layout="horizontal-row"> + <box id="info" proportion="2" height="100%" layout="vertical-row"> + <label I18N="In networking lobby" word_wrap="true" text="Description about room" + align="center" text-align="center"/> + </box> + <spacer width="20" height="20"/> + <list id="players" proportion="1" height="100%"/> + </div> + + <spacer width="20" height="20"/> + + <div width="100%" proportion="1" layout="horizontal-row"> + <list id="chat" proportion="2" height="100%"/> + <spacer width="20" height="20"/> + <box id="actions" proportion="1" height="100%" layout="vertical-row"> + <label I18N="In networking lobby" word_wrap="true" text="actions" align="center" text-align="center"/> + </box> + </div> + </div> + + <spacer width="10" height="7%"/> + + <bottombar x="2%" width="96%" height="10%" layout="horizontal-row"> + <label text_align="left" align="center" height="100%" id="online_status" proportion="1" text=""/> + + <spacer width="10" height="10" /> + + <buttonbar id="menu_bottomrow" x="0" y="0" width="20%" height="100%" align="center"> + <icon-button id="sign_in" width="64" height="64" icon="gui/main_about.png" extend_label="50" + I18N="Main menu button" text="Sign In" label_location="hover"/> + <icon-button id="register" width="64" height="64" icon="gui/tutorial.png" extend_label="75" + I18N="Main menu button" text="Register" label_location="hover"/> + <icon-button id="sign_out" width="64" height="64" icon="gui/main_quit.png" extend_label="50" + I18N="Main menu button" text="Sign Out" label_location="hover"/> + </buttonbar> + + </bottombar> + + </div> + + <icon-button id="back" x="0" y="0" height="8%" icon="gui/back.png"/> + +</stkgui> Added: main/branches/uni/src/states_screens/networking_lobby.cpp =================================================================== --- main/branches/uni/src/states_screens/networking_lobby.cpp (rev 0) +++ main/branches/uni/src/states_screens/networking_lobby.cpp 2013-07-03 00:12:00 UTC (rev 13057) @@ -0,0 +1,124 @@ +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2013 Glenn De Jonghe +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#define DEBUG_MENU_ITEM 0 + +#include "states_screens/networking_lobby.hpp" + +#include <string> +#include <iostream> + +#include "challenges/game_slot.hpp" +#include "challenges/unlock_manager.hpp" +#include "graphics/irr_driver.hpp" +#include "guiengine/scalable_font.hpp" +#include "input/device_manager.hpp" +#include "input/input_manager.hpp" +#include "io/file_manager.hpp" +#include "main_loop.hpp" +#include "states_screens/online_screen.hpp" +#include "states_screens/state_manager.hpp" +#include "states_screens/dialogs/message_dialog.hpp" +#include "modes/demo_world.hpp" +#include "utils/translation.hpp" + +#include "online/current_online_user.hpp" + + +using namespace GUIEngine; + +DEFINE_SCREEN_SINGLETON( NetworkingLobby ); + +// ---------------------------------------------------------------------------- + +NetworkingLobby::NetworkingLobby() : Screen("online/lobby.stkgui") +{ + +} // NetworkingLobby + +// ---------------------------------------------------------------------------- + +void NetworkingLobby::loadedFromFile() +{ + m_online_status_widget = getWidget<LabelWidget>("online_status"); + assert(m_online_status_widget != NULL); + + m_bottom_menu_widget = getWidget<RibbonWidget>("menu_bottomrow"); + assert(m_bottom_menu_widget != NULL); + /*m_sign_in_widget = (IconButtonWidget *) m_bottom_menu_widget->findWidgetNamed("sign_in"); + assert(m_sign_in_widget != NULL);*/ + + +} // loadedFromFile + +// ---------------------------------------------------------------------------- +bool NetworkingLobby::hasLostConnection() +{ + return !CurrentOnlineUser::get()->isSignedIn(); +} + +// ---------------------------------------------------------------------------- +void NetworkingLobby::beforeAddingWidget() +{ + +} // beforeAddingWidget + + + +// ---------------------------------------------------------------------------- +void NetworkingLobby::init() +{ + Screen::init(); + setInitialFocus(); + DemoWorld::resetIdleTime(); //FIXME : what's this? + m_online_status_widget->setText(irr::core::stringw(_("Signed in as : ")) + CurrentOnlineUser::get()->getUserName() + ".", false); +} // init + +// ---------------------------------------------------------------------------- +void NetworkingLobby::onUpdate(float delta, irr::video::IVideoDriver* driver) +{ +} // onUpdate + +// ---------------------------------------------------------------------------- + +void NetworkingLobby::eventCallback(Widget* widget, const std::string& name, const int playerID) +{ + +} // eventCallback + +// ---------------------------------------------------------------------------- + +void NetworkingLobby::tearDown() +{ +} // tearDown + +// ---------------------------------------------------------------------------- +void NetworkingLobby::onDisabledItemClicked(const std::string& item) +{ + +} // onDisabledItemClicked + +// ---------------------------------------------------------------------------- +void NetworkingLobby::setInitialFocus() +{ +} // setInitialFocus + +// ---------------------------------------------------------------------------- +void NetworkingLobby::onDialogClose() +{ + setInitialFocus(); +} // onDialogClose() Property changes on: main/branches/uni/src/states_screens/networking_lobby.cpp ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: main/branches/uni/src/states_screens/networking_lobby.hpp =================================================================== --- main/branches/uni/src/states_screens/networking_lobby.hpp (rev 0) +++ main/branches/uni/src/states_screens/networking_lobby.hpp 2013-07-03 00:12:00 UTC (rev 13057) @@ -0,0 +1,79 @@ +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2013 Glenn De Jonghe +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_NETWORKING_LOBBY_HPP +#define HEADER_NETWORKING_LOBBY_HPP + +#include "guiengine/screen.hpp" +#include "guiengine/widgets/label_widget.hpp" +#include "guiengine/widgets/ribbon_widget.hpp" +#include "guiengine/widgets/icon_button_widget.hpp" + +namespace GUIEngine { class Widget; class ListWidget; } + +/** + * \brief Handles the main menu + * \ingroup states_screens + */ +class NetworkingLobby : public GUIEngine::Screen, + public GUIEngine::ScreenSingleton<NetworkingLobby> +{ +private: + friend class GUIEngine::ScreenSingleton<NetworkingLobby>; + + NetworkingLobby(); + + GUIEngine::LabelWidget * m_online_status_widget; + + GUIEngine::RibbonWidget * m_bottom_menu_widget; + GUIEngine::IconButtonWidget * m_sign_in_widget; + GUIEngine::IconButtonWidget * m_register_widget; + GUIEngine::IconButtonWidget * m_sign_out_widget; + + /** \brief Checks if the user is still signed in. */ + bool hasLostConnection(); + /** \brief Sets which widget has to be focused. Depends on the user state. */ + void setInitialFocus(); + +public: + + virtual void onUpdate(float delta, irr::video::IVideoDriver* driver) OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void loadedFromFile() OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void eventCallback(GUIEngine::Widget* widget, const std::string& name, + const int playerID) OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void beforeAddingWidget() OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void init() OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void tearDown() OVERRIDE; + + /** \brief implement callback from parent class GUIEngine::Screen */ + virtual void onDisabledItemClicked(const std::string& item) OVERRIDE; + + /** \brief Implements the callback when a dialog gets closed. */ + virtual void onDialogClose() OVERRIDE; +}; + +#endif Property changes on: main/branches/uni/src/states_screens/networking_lobby.hpp ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Modified: main/branches/uni/src/states_screens/online_screen.cpp =================================================================== --- main/branches/uni/src/states_screens/online_screen.cpp 2013-07-02 07:16:14 UTC (rev 13056) +++ main/branches/uni/src/states_screens/online_screen.cpp 2013-07-03 00:12:00 UTC (rev 13057) @@ -35,6 +35,7 @@ #include "states_screens/dialogs/message_dialog.hpp" #include "states_screens/dialogs/login_dialog.hpp" #include "states_screens/dialogs/registration_dialog.hpp" +#include "states_screens/networking_lobby.hpp" #include "modes/demo_world.hpp" #include "utils/translation.hpp" @@ -189,7 +190,7 @@ else if (selection == "quick_play") { //if (m_recorded_state == Registered || m_recorded_state == Guest) - new MessageDialog("Coming soon!"); + StateManager::get()->pushScreen(NetworkingLobby::getInstance()); } } // eventCallback @@ -205,11 +206,12 @@ { if (item == "find_server" || item =="create_server") { - new LoginDialog(LoginDialog::Registration_Required); + new LoginDialog(LoginDialog::Registration_Required); } else if (item == "quick_play") { - new LoginDialog(LoginDialog::Signing_In_Required); + StateManager::get()->pushScreen(NetworkingLobby::getInstance()); + // FIXME temporary; new LoginDialog(LoginDialog::Signing_In_Required); } } // onDisabledItemClicked @@ -229,4 +231,4 @@ GUIEngine::reshowCurrentScreen(); else setInitialFocus(); -} // onLoginDialogClose() +} // onDialogClose() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |