[_GSoC Uni_] Signing out. Online screen (beta) improvements.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/uni@13001 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
075b3aa3c7
commit
f99f27cbf1
@ -1,31 +1,53 @@
|
|||||||
<stkgui>
|
<stkgui>
|
||||||
<icon-button id="back" x="0" y="0" height="8%" icon="gui/back.png"/>
|
|
||||||
|
|
||||||
<div x="0" y="0" width="100%" height="100%" layout="vertical-row" >
|
<div x="0" y="0" width="100%" height="100%" layout="vertical-row" >
|
||||||
|
|
||||||
<icon id="logo" align="center" proportion="5" width="100%" icon="gui/logo.png"/>
|
<header text_align="center" width="80%" align="center" I18N="In the online multiplayer screen" text="Online Multiplayer"/>
|
||||||
|
<spacer height="15" width="10"/>
|
||||||
|
<box proportion="4" width="90%" layout="vertical-row" align="center">
|
||||||
|
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" id="outer_box" >
|
||||||
|
<label I18N="In the online multiplayer screen" proportion="4" text="Graphical Effects Level" align="center"/>
|
||||||
|
<spacer width="20" height="20"/>
|
||||||
|
<div id="options" width="fit" proportion="1" align="center" layout="horizontal-row">
|
||||||
|
<button id="signin" height="fit" align="center" width="fit" I18N="In the login dialog" text="Sign In"/>
|
||||||
|
<spacer height="50" width="50">
|
||||||
|
<button id="signup" height="fit" align="center" width="fit" I18N="In the login dialog" text="Register"/>
|
||||||
|
<spacer height="50" width="50">
|
||||||
|
<button id="cancel" height="fit" align="center" width="fit" I18N="In the login dialog" text="Cancel"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</box>
|
||||||
|
|
||||||
<buttonbar id="menu_toprow" proportion="3" width="75%" align="center">
|
<buttonbar id="menu_toprow" proportion="3" width="90%" align="center">
|
||||||
<icon-button id="signin" width="128" height="128"
|
<icon-button id="quick_play" width="128" height="128"
|
||||||
icon="gui/menu_race.png" focus_icon="gui/menu_race_focus.png"
|
icon="gui/menu_race.png" focus_icon="gui/menu_race_focus.png"
|
||||||
I18N="Online menu button" text="Sign in"/>
|
I18N="Online menu button" text="Quick Play"/>
|
||||||
|
<icon-button id="find_server" width="128" height="128"
|
||||||
|
icon="gui/menu_race.png" focus_icon="gui/menu_race_focus.png"
|
||||||
|
I18N="Online menu button" text="Find Server"/>
|
||||||
|
<icon-button id="create_server" width="128" height="128"
|
||||||
|
icon="gui/menu_race.png" focus_icon="gui/menu_race_focus.png"
|
||||||
|
I18N="Online menu button" text="Create Server"/>
|
||||||
</buttonbar>
|
</buttonbar>
|
||||||
|
|
||||||
<spacer width="10" height="7%"/>
|
<spacer width="10" height="7%"/>
|
||||||
|
|
||||||
<bottombar width="100%" height="10%" layout="horizontal-row">
|
<bottombar x="2%" width="96%" height="10%" layout="horizontal-row">
|
||||||
|
<label text_align="left" align="center" height="100%" id="online_status" proportion="1" I18N="In the online multiplayer screen" text="Loading..."/>
|
||||||
<spacer proportion="3" height="10" />
|
<spacer width="10" height="10" />
|
||||||
|
|
||||||
<buttonbar id="menu_bottomrow" x="0" y="0" width="20%" height="100%" align="center">
|
<buttonbar id="menu_bottomrow" x="0" y="0" width="20%" height="100%" align="right">
|
||||||
<icon-button id="signin" width="64" height="64" icon="gui/main_options.png" extend_label="50"
|
<icon-button id="sign_in" width="64" height="64" icon="gui/main_options.png" extend_label="50"
|
||||||
I18N="Main menu button" text="Log In" label_location="hover"/>
|
I18N="Main menu button" text="Sign In" label_location="hover"/>
|
||||||
<icon-button id="signout" width="64" height="64" icon="gui/main_quit.png" extend_label="50"
|
<icon-button id="sign_out" width="64" height="64" icon="gui/main_quit.png" extend_label="50"
|
||||||
I18N="Main menu button" text="Log Out" label_location="hover"/>
|
I18N="Main menu button" text="Sign Out" label_location="hover"/>
|
||||||
|
<icon-button id="register" width="64" height="64" icon="gui/main_quit.png" extend_label="50"
|
||||||
|
I18N="Main menu button" text="Register" label_location="hover"/>
|
||||||
</buttonbar>
|
</buttonbar>
|
||||||
|
|
||||||
</bottombar>
|
</bottombar>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<icon-button id="back" x="0" y="0" height="8%" icon="gui/back.png"/>
|
||||||
|
|
||||||
</stkgui>
|
</stkgui>
|
||||||
|
@ -46,6 +46,7 @@ void CurrentOnlineUser::deallocate()
|
|||||||
|
|
||||||
CurrentOnlineUser::CurrentOnlineUser(){
|
CurrentOnlineUser::CurrentOnlineUser(){
|
||||||
m_is_signed_in = false;
|
m_is_signed_in = false;
|
||||||
|
m_is_guest = true;
|
||||||
m_id = 0;
|
m_id = 0;
|
||||||
m_name = "";
|
m_name = "";
|
||||||
m_token = "";
|
m_token = "";
|
||||||
@ -104,6 +105,7 @@ bool CurrentOnlineUser::signIn( const irr::core::stringw &username,
|
|||||||
assert(result->get("username", &m_name));
|
assert(result->get("username", &m_name));
|
||||||
assert(result->get("userid", &m_id));
|
assert(result->get("userid", &m_id));
|
||||||
m_is_signed_in = true;
|
m_is_signed_in = true;
|
||||||
|
m_is_guest = false;
|
||||||
}
|
}
|
||||||
result->get("info", &info);
|
result->get("info", &info);
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,7 @@ class CurrentOnlineUser : public OnlineUser
|
|||||||
protected:
|
protected:
|
||||||
std::string m_token;
|
std::string m_token;
|
||||||
bool m_is_signed_in;
|
bool m_is_signed_in;
|
||||||
|
bool m_is_guest;
|
||||||
CurrentOnlineUser();
|
CurrentOnlineUser();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -59,6 +60,7 @@ class CurrentOnlineUser : public OnlineUser
|
|||||||
/** Returns the username if signed in. */
|
/** Returns the username if signed in. */
|
||||||
irr::core::stringw getUserName() const;
|
irr::core::stringw getUserName() const;
|
||||||
bool isSignedIn(){ return m_is_signed_in; }
|
bool isSignedIn(){ return m_is_signed_in; }
|
||||||
|
bool isGuest(){ return m_is_guest; }
|
||||||
|
|
||||||
}; // class CurrentOnlineUser
|
}; // class CurrentOnlineUser
|
||||||
|
|
||||||
|
@ -127,7 +127,6 @@ void LoginDialog::onUpdate(float dt)
|
|||||||
// It's unsafe to delete from inside the event handler so we do it here
|
// It's unsafe to delete from inside the event handler so we do it here
|
||||||
if (m_self_destroy)
|
if (m_self_destroy)
|
||||||
{
|
{
|
||||||
GUIEngine::getGUIEnv()->removeFocus( m_irrlicht_window );
|
|
||||||
ModalDialog::dismiss();
|
ModalDialog::dismiss();
|
||||||
if (m_open_registration_dialog)
|
if (m_open_registration_dialog)
|
||||||
new RegistrationDialog(0.8f, 0.9f);
|
new RegistrationDialog(0.8f, 0.9f);
|
||||||
|
@ -277,7 +277,6 @@ void RegistrationDialog::onUpdate(float dt)
|
|||||||
// It's unsafe to delete from inside the event handler so we do it here
|
// It's unsafe to delete from inside the event handler so we do it here
|
||||||
if (m_self_destroy)
|
if (m_self_destroy)
|
||||||
{
|
{
|
||||||
GUIEngine::getGUIEnv()->removeFocus( m_irrlicht_window );
|
|
||||||
ModalDialog::dismiss();
|
ModalDialog::dismiss();
|
||||||
}
|
}
|
||||||
if (m_show_registration_info)
|
if (m_show_registration_info)
|
||||||
|
@ -27,8 +27,8 @@
|
|||||||
#include "graphics/irr_driver.hpp"
|
#include "graphics/irr_driver.hpp"
|
||||||
#include "guiengine/scalable_font.hpp"
|
#include "guiengine/scalable_font.hpp"
|
||||||
#include "guiengine/widgets/label_widget.hpp"
|
#include "guiengine/widgets/label_widget.hpp"
|
||||||
#include "guiengine/widgets/list_widget.hpp"
|
|
||||||
#include "guiengine/widgets/ribbon_widget.hpp"
|
#include "guiengine/widgets/ribbon_widget.hpp"
|
||||||
|
#include "guiengine/widgets/icon_button_widget.hpp"
|
||||||
#include "input/device_manager.hpp"
|
#include "input/device_manager.hpp"
|
||||||
#include "input/input_manager.hpp"
|
#include "input/input_manager.hpp"
|
||||||
#include "io/file_manager.hpp"
|
#include "io/file_manager.hpp"
|
||||||
@ -38,6 +38,7 @@
|
|||||||
#include "modes/demo_world.hpp"
|
#include "modes/demo_world.hpp"
|
||||||
#include "utils/translation.hpp"
|
#include "utils/translation.hpp"
|
||||||
|
|
||||||
|
#include "online/current_online_user.hpp"
|
||||||
#include "states_screens/dialogs/login_dialog.hpp"
|
#include "states_screens/dialogs/login_dialog.hpp"
|
||||||
|
|
||||||
using namespace GUIEngine;
|
using namespace GUIEngine;
|
||||||
@ -62,31 +63,37 @@ void OnlineScreen::loadedFromFile()
|
|||||||
void OnlineScreen::init()
|
void OnlineScreen::init()
|
||||||
{
|
{
|
||||||
Screen::init();
|
Screen::init();
|
||||||
|
|
||||||
// Avoid incorrect behaviour in certain race circumstances:
|
|
||||||
// If a multi-player game is played with two keyboards, the 2nd
|
|
||||||
// player selects his kart last, and only the keyboard is used
|
|
||||||
// to select all other settings - then if the next time the kart
|
|
||||||
// selection screen comes up, the default device will still be
|
|
||||||
// the 2nd player. So if the first player presses 'select', it
|
|
||||||
// will instead add a second player (so basically the key
|
|
||||||
// binding for the second player become the default, so pressing
|
|
||||||
// select will add a new player). See bug 3090931
|
|
||||||
// To avoid this, we will clean the last used device, making
|
|
||||||
// the key bindings for the first player the default again.
|
|
||||||
input_manager->getDeviceList()->clearLatestUsedDevice();
|
|
||||||
|
|
||||||
RibbonWidget* r = getWidget<RibbonWidget>("menu_toprow");
|
RibbonWidget* r = getWidget<RibbonWidget>("menu_toprow");
|
||||||
r->setFocusForPlayer(PLAYER_ID_GAME_MASTER);
|
r->setFocusForPlayer(PLAYER_ID_GAME_MASTER);
|
||||||
DemoWorld::resetIdleTime();
|
DemoWorld::resetIdleTime();
|
||||||
|
|
||||||
#if _IRR_MATERIAL_MAX_TEXTURES_ < 8
|
|
||||||
getWidget<IconButtonWidget>("logo")->setImage("gui/logo_broken.png",
|
|
||||||
IconButtonWidget::ICON_PATH_TYPE_RELATIVE);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
} // init
|
} // init
|
||||||
|
|
||||||
|
|
||||||
|
void OnlineScreen::beforeAddingWidget()
|
||||||
|
{
|
||||||
|
RibbonWidget* topRow = getWidget<RibbonWidget>("menu_toprow");
|
||||||
|
assert(topRow != NULL);
|
||||||
|
RibbonWidget* bottomRow = getWidget<RibbonWidget>("menu_bottomrow");
|
||||||
|
assert(bottomRow != NULL);
|
||||||
|
if(CurrentOnlineUser::get()->isSignedIn())
|
||||||
|
{
|
||||||
|
if(CurrentOnlineUser::get()->isGuest())
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//Signed in and not guest
|
||||||
|
bottomRow->removeChildNamed("sign_in");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bottomRow->removeChildNamed("sign_out");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
void OnlineScreen::onUpdate(float delta, irr::video::IVideoDriver* driver)
|
void OnlineScreen::onUpdate(float delta, irr::video::IVideoDriver* driver)
|
||||||
{
|
{
|
||||||
@ -106,13 +113,13 @@ void OnlineScreen::eventCallback(Widget* widget, const std::string& name, const
|
|||||||
if (ribbon == NULL) return; // what's that event??
|
if (ribbon == NULL) return; // what's that event??
|
||||||
std::string selection = ribbon->getSelectionIDString(PLAYER_ID_GAME_MASTER);
|
std::string selection = ribbon->getSelectionIDString(PLAYER_ID_GAME_MASTER);
|
||||||
|
|
||||||
if (selection == "signin")
|
if (selection == "sign_in")
|
||||||
{
|
{
|
||||||
new LoginDialog(0.6f, 0.6f, _("Not yet an account? Press register beneath!"));
|
new LoginDialog(0.6f, 0.6f, _("Not yet an account? Press register beneath!"));
|
||||||
}
|
}
|
||||||
else if (selection == "signout")
|
else if (selection == "sign_out")
|
||||||
{
|
{
|
||||||
new LoginDialog(0.6f, 0.6f, _("Not yet an account? Press register beneath!"));
|
CurrentOnlineUser::get()->signOut();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // eventCallback
|
} // eventCallback
|
||||||
@ -128,3 +135,12 @@ void OnlineScreen::tearDown()
|
|||||||
void OnlineScreen::onDisabledItemClicked(const std::string& item)
|
void OnlineScreen::onDisabledItemClicked(const std::string& item)
|
||||||
{
|
{
|
||||||
} // onDisabledItemClicked
|
} // onDisabledItemClicked
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void OnlineScreen::reload()
|
||||||
|
{
|
||||||
|
this->unload();
|
||||||
|
if (!this->isLoaded()) this->loadFromFile();
|
||||||
|
this->init();
|
||||||
|
}
|
||||||
|
@ -35,6 +35,8 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
void reload();
|
||||||
|
|
||||||
virtual void onUpdate(float delta, irr::video::IVideoDriver* driver) OVERRIDE;
|
virtual void onUpdate(float delta, irr::video::IVideoDriver* driver) OVERRIDE;
|
||||||
|
|
||||||
/** \brief implement callback from parent class GUIEngine::Screen */
|
/** \brief implement callback from parent class GUIEngine::Screen */
|
||||||
@ -44,6 +46,9 @@ public:
|
|||||||
virtual void eventCallback(GUIEngine::Widget* widget, const std::string& name,
|
virtual void eventCallback(GUIEngine::Widget* widget, const std::string& name,
|
||||||
const int playerID) OVERRIDE;
|
const int playerID) OVERRIDE;
|
||||||
|
|
||||||
|
/** \brief implement callback from parent class GUIEngine::Screen */
|
||||||
|
virtual void beforeAddingWidget() OVERRIDE;
|
||||||
|
|
||||||
/** \brief implement callback from parent class GUIEngine::Screen */
|
/** \brief implement callback from parent class GUIEngine::Screen */
|
||||||
virtual void init() OVERRIDE;
|
virtual void init() OVERRIDE;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user