[_GSoC Uni_] Updated the interface code for the online part and some small adjustments to the underlying code. -- Ready for user testing! Can connect to the api server now. Activation not yet needed, mail addresses will not be saved, don't pick an important password. (Users will sometimes be deleted during development anyway.)
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/uni@13031 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
0850ccf617
commit
4e2ef1347a
@ -33,15 +33,15 @@
|
|||||||
|
|
||||||
<buttonbar id="options" width="90%" proportion="1" align="center">
|
<buttonbar id="options" width="90%" proportion="1" align="center">
|
||||||
<icon-button id="sign_in" width="64" height="64" icon="gui/main_options.png"
|
<icon-button id="sign_in" width="64" height="64" icon="gui/main_options.png"
|
||||||
I18N="Main menu button" text="Sign In" label_location="bottom"/>
|
I18N="Login dialog" text="Sign In" label_location="bottom"/>
|
||||||
<icon-button id="forgot_password" width="64" height="64" icon="gui/main_help.png"
|
<icon-button id="recovery" width="64" height="64" icon="gui/main_help.png"
|
||||||
I18N="Main menu button" text="Recovery" label_location="bottom"/>
|
I18N="Login dialog" text="Recovery" label_location="bottom"/>
|
||||||
<icon-button id="sign_up" width="64" height="64" icon="gui/tutorial.png"
|
<icon-button id="register" width="64" height="64" icon="gui/tutorial.png"
|
||||||
I18N="Main menu button" text="Register" label_location="bottom"/>
|
I18N="Login dialog" text="Register" label_location="bottom"/>
|
||||||
<icon-button id="as_guest" width="64" height="64" icon="gui/main_about.png"
|
<icon-button id="as_guest" width="64" height="64" icon="gui/main_about.png"
|
||||||
I18N="Main menu button" text="As guest" label_location="bottom"/>
|
I18N="Login dialog" text="As guest" label_location="bottom"/>
|
||||||
<icon-button id="cancel" width="64" height="64" icon="gui/main_quit.png"
|
<icon-button id="cancel" width="64" height="64" icon="gui/main_quit.png"
|
||||||
I18N="Main menu button" text="Cancel" label_location="bottom"/>
|
I18N="Login dialog" text="Cancel" label_location="bottom"/>
|
||||||
</buttonbar>
|
</buttonbar>
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,7 +6,9 @@
|
|||||||
<box proportion="4" width="90%" layout="vertical-row" align="center">
|
<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" >
|
<div x="2%" y="2%" width="96%" height="96%" layout="vertical-row" id="outer_box" >
|
||||||
<label I18N="In the online multiplayer screen" proportion="4" word_wrap="true" text=
|
<label I18N="In the online multiplayer screen" proportion="4" word_wrap="true" text=
|
||||||
"Here will come some information.. or statistic.. or whatever. Yet to be filled in!" align="center"/>
|
"Here will come some information.. or statistics.. or whatever. Yet to be filled in! It will change depending on state. And I'd also like a close button at the right top.
|
||||||
|
|
||||||
|
" align="center"/>
|
||||||
</div>
|
</div>
|
||||||
</box>
|
</box>
|
||||||
|
|
||||||
@ -32,10 +34,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="center">
|
||||||
<icon-button id="sign_in" width="64" height="64" icon="gui/main_about.png" extend_label="50"
|
<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"/>
|
I18N="Main menu button" text="Sign In" label_location="hover"/>
|
||||||
|
<icon-button id="register" width="64" height="64" icon="gui/tutorial.png" extend_label="50"
|
||||||
|
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"
|
<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"/>
|
I18N="Main menu button" text="Sign Out" label_location="hover"/>
|
||||||
<icon-button id="sign_up" width="64" height="64" icon="gui/tutorial.png" extend_label="50"
|
|
||||||
I18N="Main menu button" text="Register" label_location="hover"/>
|
|
||||||
</buttonbar>
|
</buttonbar>
|
||||||
|
|
||||||
</bottombar>
|
</bottombar>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<spacer height="20" width="50">
|
<spacer height="20" width="50">
|
||||||
|
|
||||||
<label id="terms" proportion="6" width="90%" align="center" text_align="center" word_wrap="true"
|
<label id="terms" proportion="6" width="90%" align="center" text_align="center" word_wrap="true"
|
||||||
I18N="In the registration dialog' dialog" text="The terms will come here. In a fancy scroll box."/>
|
I18N="In the registration dialog' dialog" text="The terms will come here. In a fancy scroll box."/>
|
||||||
|
|
||||||
<div align="center" width="fit" height="fit" layout="horizontal-row" >
|
<div align="center" width="fit" height="fit" layout="horizontal-row" >
|
||||||
<label text_align="center" align="center" I18N="In the registration dialog" word_wrap="true"
|
<label text_align="center" align="center" I18N="In the registration dialog" word_wrap="true"
|
||||||
|
@ -46,7 +46,7 @@ void CurrentOnlineUser::deallocate()
|
|||||||
|
|
||||||
CurrentOnlineUser::CurrentOnlineUser(){
|
CurrentOnlineUser::CurrentOnlineUser(){
|
||||||
m_is_signed_in = false;
|
m_is_signed_in = false;
|
||||||
m_is_guest = true;
|
m_is_guest = false;
|
||||||
m_id = 0;
|
m_id = 0;
|
||||||
m_name = "";
|
m_name = "";
|
||||||
m_token = "";
|
m_token = "";
|
||||||
@ -78,7 +78,7 @@ bool CurrentOnlineUser::signUp( const irr::core::stringw &username,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
info = _("Server error");
|
info = _("Unable to connect to the server. Check your internet connection or try again later.");
|
||||||
}
|
}
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
@ -134,6 +134,7 @@ bool CurrentOnlineUser::signOut(){
|
|||||||
m_name = "";
|
m_name = "";
|
||||||
m_id = 0;
|
m_id = 0;
|
||||||
m_is_signed_in = false;
|
m_is_signed_in = false;
|
||||||
|
m_is_guest = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return !m_is_signed_in;
|
return !m_is_signed_in;
|
||||||
@ -143,10 +144,8 @@ bool CurrentOnlineUser::signOut(){
|
|||||||
|
|
||||||
irr::core::stringw CurrentOnlineUser::getUserName() const
|
irr::core::stringw CurrentOnlineUser::getUserName() const
|
||||||
{
|
{
|
||||||
if(m_is_signed_in){
|
if(m_is_signed_in)
|
||||||
return m_name;
|
return m_name;
|
||||||
}else{
|
else
|
||||||
return _("Not signed in");
|
return _("Currently not signed in");
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,6 @@
|
|||||||
#include "audio/sfx_manager.hpp"
|
#include "audio/sfx_manager.hpp"
|
||||||
#include "config/player.hpp"
|
#include "config/player.hpp"
|
||||||
#include "guiengine/engine.hpp"
|
#include "guiengine/engine.hpp"
|
||||||
#include "guiengine/widgets/button_widget.hpp"
|
|
||||||
#include "guiengine/widgets/text_box_widget.hpp"
|
|
||||||
#include "states_screens/state_manager.hpp"
|
#include "states_screens/state_manager.hpp"
|
||||||
#include "utils/translation.hpp"
|
#include "utils/translation.hpp"
|
||||||
#include "utils/string_utils.hpp"
|
#include "utils/string_utils.hpp"
|
||||||
@ -45,15 +43,7 @@ LoginDialog::LoginDialog(const Message message_type) :
|
|||||||
m_reshow_current_screen = false;
|
m_reshow_current_screen = false;
|
||||||
loadFromFile("online/login_dialog.stkgui");
|
loadFromFile("online/login_dialog.stkgui");
|
||||||
|
|
||||||
TextBoxWidget* textBox = getWidget<TextBoxWidget>("password");
|
m_info_widget = getWidget<LabelWidget>("info");
|
||||||
assert(textBox != NULL);
|
|
||||||
textBox->setPasswordBox(true,L'*');
|
|
||||||
|
|
||||||
textBox = getWidget<TextBoxWidget>("username");
|
|
||||||
assert(textBox != NULL);
|
|
||||||
textBox->setFocusForPlayer(PLAYER_ID_GAME_MASTER);
|
|
||||||
|
|
||||||
LabelWidget * m_info_widget = getWidget<LabelWidget>("info");
|
|
||||||
assert(m_info_widget != NULL);
|
assert(m_info_widget != NULL);
|
||||||
irr::core::stringw info;
|
irr::core::stringw info;
|
||||||
if (message_type == Normal)
|
if (message_type == Normal)
|
||||||
@ -69,6 +59,28 @@ LoginDialog::LoginDialog(const Message message_type) :
|
|||||||
info += _("If you do not have an account yet, you can choose to sign in as a guest "
|
info += _("If you do not have an account yet, you can choose to sign in as a guest "
|
||||||
"or press the register icon at the bottom to gain access to all the features!");
|
"or press the register icon at the bottom to gain access to all the features!");
|
||||||
m_info_widget->setText(info, false);
|
m_info_widget->setText(info, false);
|
||||||
|
|
||||||
|
m_username_widget = getWidget<TextBoxWidget>("username");
|
||||||
|
assert(m_username_widget != NULL);
|
||||||
|
m_username_widget->setFocusForPlayer(PLAYER_ID_GAME_MASTER);
|
||||||
|
|
||||||
|
m_password_widget = getWidget<TextBoxWidget>("password");
|
||||||
|
assert(m_password_widget != NULL);
|
||||||
|
m_password_widget->setPasswordBox(true,L'*');
|
||||||
|
|
||||||
|
m_message_widget = getWidget<LabelWidget>("message");
|
||||||
|
assert(m_message_widget != NULL);
|
||||||
|
|
||||||
|
m_sign_in_widget = getWidget<IconButtonWidget>("sign_in");
|
||||||
|
assert(m_sign_in_widget != NULL);
|
||||||
|
m_recovery_widget = getWidget<IconButtonWidget>("recovery");
|
||||||
|
assert(m_recovery_widget != NULL);
|
||||||
|
m_register_widget = getWidget<IconButtonWidget>("register");
|
||||||
|
assert(m_register_widget != NULL);
|
||||||
|
m_as_guest_widget = getWidget<IconButtonWidget>("as_guest");
|
||||||
|
assert(m_as_guest_widget != NULL);
|
||||||
|
m_cancel_widget = getWidget<IconButtonWidget>("cancel");
|
||||||
|
assert(m_cancel_widget != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
@ -77,13 +89,6 @@ LoginDialog::~LoginDialog()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
void LoginDialog::beforeAddingWidgets()
|
|
||||||
{
|
|
||||||
LabelWidget * m_message_widget = getWidget<LabelWidget>("message");
|
|
||||||
assert(m_message_widget != NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
GUIEngine::EventPropagation LoginDialog::processEvent(const std::string& eventSource)
|
GUIEngine::EventPropagation LoginDialog::processEvent(const std::string& eventSource)
|
||||||
@ -95,8 +100,8 @@ GUIEngine::EventPropagation LoginDialog::processEvent(const std::string& eventSo
|
|||||||
}
|
}
|
||||||
else if(eventSource == "sign_in")
|
else if(eventSource == "sign_in")
|
||||||
{
|
{
|
||||||
const stringw username = getWidget<TextBoxWidget>("username")->getText().trim();
|
const stringw username = m_username_widget->getText().trim();
|
||||||
const stringw password = getWidget<TextBoxWidget>("password")->getText().trim();
|
const stringw password = m_password_widget->getText().trim();
|
||||||
stringw info = "";
|
stringw info = "";
|
||||||
if(CurrentOnlineUser::get()->signIn(username,password,info))
|
if(CurrentOnlineUser::get()->signIn(username,password,info))
|
||||||
{
|
{
|
||||||
@ -106,15 +111,12 @@ GUIEngine::EventPropagation LoginDialog::processEvent(const std::string& eventSo
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
sfx_manager->quickSound( "anvil" );
|
sfx_manager->quickSound( "anvil" );
|
||||||
Log::info("Login Dialog", "check1");
|
m_message_widget->setColor(irr::video::SColor(255, 255, 0, 0));
|
||||||
irr::video::SColor red(255, 255, 0, 0);
|
|
||||||
m_message_widget->setColor(red);
|
|
||||||
m_message_widget->setText(info, false);
|
m_message_widget->setText(info, false);
|
||||||
Log::info("Login Dialog", "check2");
|
|
||||||
}
|
}
|
||||||
return GUIEngine::EVENT_BLOCK;
|
return GUIEngine::EVENT_BLOCK;
|
||||||
}
|
}
|
||||||
else if(eventSource == "sign_up")
|
else if(eventSource == "register")
|
||||||
{
|
{
|
||||||
m_open_registration_dialog = true;
|
m_open_registration_dialog = true;
|
||||||
return GUIEngine::EVENT_BLOCK;
|
return GUIEngine::EVENT_BLOCK;
|
||||||
@ -128,12 +130,10 @@ void LoginDialog::onEnterPressedInternal()
|
|||||||
{
|
{
|
||||||
//If enter was pressed while "cancel" nor "signup" was selected, then interpret as "signin" press.
|
//If enter was pressed while "cancel" nor "signup" was selected, then interpret as "signin" press.
|
||||||
const int playerID = PLAYER_ID_GAME_MASTER;
|
const int playerID = PLAYER_ID_GAME_MASTER;
|
||||||
ButtonWidget* cancelButton = getWidget<ButtonWidget>("cancel");
|
if (!GUIEngine::isFocusedForPlayer(m_recovery_widget, playerID) &&
|
||||||
assert(cancelButton != NULL);
|
!GUIEngine::isFocusedForPlayer(m_register_widget, playerID) &&
|
||||||
ButtonWidget* registerButton = getWidget<ButtonWidget>("sign_up");
|
!GUIEngine::isFocusedForPlayer(m_as_guest_widget, playerID) &&
|
||||||
assert(registerButton != NULL);
|
!GUIEngine::isFocusedForPlayer(m_cancel_widget, playerID))
|
||||||
if (!GUIEngine::isFocusedForPlayer(cancelButton, playerID) &&
|
|
||||||
!GUIEngine::isFocusedForPlayer(registerButton, playerID))
|
|
||||||
{
|
{
|
||||||
processEvent("sign_in");
|
processEvent("sign_in");
|
||||||
}
|
}
|
||||||
@ -151,7 +151,13 @@ void LoginDialog::onUpdate(float dt)
|
|||||||
{
|
{
|
||||||
ModalDialog::dismiss();
|
ModalDialog::dismiss();
|
||||||
if (m_reshow_current_screen)
|
if (m_reshow_current_screen)
|
||||||
GUIEngine::reshowCurrentScreen();
|
/*Replaced to online state screen. Not 100% how I will handle this.
|
||||||
|
* Thee options :
|
||||||
|
* - Listener
|
||||||
|
* - Directly calling GUIEngine::reshowCurrentScreen(); (old option)
|
||||||
|
* - Underlying stateschreen is responsible for polling changed state (current option)
|
||||||
|
*/
|
||||||
|
true;//GUIEngine::reshowCurrentScreen();
|
||||||
if (m_open_registration_dialog)
|
if (m_open_registration_dialog)
|
||||||
new RegistrationDialog(0.8f, 0.9f);
|
new RegistrationDialog(0.8f, 0.9f);
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
#include "guiengine/modaldialog.hpp"
|
#include "guiengine/modaldialog.hpp"
|
||||||
#include "guiengine/widgets/text_box_widget.hpp"
|
#include "guiengine/widgets/text_box_widget.hpp"
|
||||||
|
#include "guiengine/widgets/icon_button_widget.hpp"
|
||||||
#include "guiengine/widgets/label_widget.hpp"
|
#include "guiengine/widgets/label_widget.hpp"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -37,8 +38,17 @@ private:
|
|||||||
bool m_self_destroy;
|
bool m_self_destroy;
|
||||||
bool m_open_registration_dialog;
|
bool m_open_registration_dialog;
|
||||||
bool m_reshow_current_screen;
|
bool m_reshow_current_screen;
|
||||||
GUIEngine::LabelWidget * m_message_widget;
|
|
||||||
GUIEngine::LabelWidget * m_info_widget;
|
GUIEngine::LabelWidget * m_info_widget;
|
||||||
|
GUIEngine::TextBoxWidget * m_username_widget;
|
||||||
|
GUIEngine::TextBoxWidget * m_password_widget;
|
||||||
|
GUIEngine::LabelWidget * m_message_widget;
|
||||||
|
|
||||||
|
GUIEngine::IconButtonWidget * m_sign_in_widget;
|
||||||
|
GUIEngine::IconButtonWidget * m_recovery_widget;
|
||||||
|
GUIEngine::IconButtonWidget * m_register_widget;
|
||||||
|
GUIEngine::IconButtonWidget * m_as_guest_widget;
|
||||||
|
GUIEngine::IconButtonWidget * m_cancel_widget;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -57,7 +67,6 @@ public:
|
|||||||
|
|
||||||
void onEnterPressedInternal();
|
void onEnterPressedInternal();
|
||||||
GUIEngine::EventPropagation processEvent(const std::string& eventSource);
|
GUIEngine::EventPropagation processEvent(const std::string& eventSource);
|
||||||
void beforeAddingWidgets();
|
|
||||||
|
|
||||||
virtual void onUpdate(float dt);
|
virtual void onUpdate(float dt);
|
||||||
//virtual void onTextUpdated();
|
//virtual void onTextUpdated();
|
||||||
|
@ -100,6 +100,14 @@ void RegistrationDialog::showRegistrationInfo(){
|
|||||||
LabelWidget * label = getWidget<LabelWidget>("info");
|
LabelWidget * label = getWidget<LabelWidget>("info");
|
||||||
assert(label != NULL);
|
assert(label != NULL);
|
||||||
label->setColor(irr::video::SColor(255, 255, 0, 0));
|
label->setColor(irr::video::SColor(255, 255, 0, 0));
|
||||||
|
label->setText(m_registration_error, false);
|
||||||
|
|
||||||
|
ButtonWidget * button = getWidget<ButtonWidget>("next");
|
||||||
|
assert(button != NULL);
|
||||||
|
|
||||||
|
button = getWidget<ButtonWidget>("cancel");
|
||||||
|
assert(button != NULL);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
@ -184,14 +192,14 @@ bool RegistrationDialog::processTermsEvent(const std::string& eventSource){
|
|||||||
{
|
{
|
||||||
assert(getWidget<CheckBoxWidget>("accepted")->getState());
|
assert(getWidget<CheckBoxWidget>("accepted")->getState());
|
||||||
m_agreement = true;
|
m_agreement = true;
|
||||||
irr::core::stringw info;
|
if(CurrentOnlineUser::get()->signUp(m_username, m_password, m_password_confirm, m_email, true, m_registration_error))
|
||||||
if(CurrentOnlineUser::get()->signUp(m_username, m_password, m_password_confirm, m_email, true, info))
|
|
||||||
{
|
{
|
||||||
m_show_registration_activation = true;
|
m_show_registration_activation = true;
|
||||||
|
m_registration_error = "";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Log::error("Registration dialog", "Info : %s", irr::core::stringc(info.c_str()).c_str());
|
m_show_registration_info = true;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ public:
|
|||||||
{
|
{
|
||||||
Info = 1,
|
Info = 1,
|
||||||
Terms = 2,
|
Terms = 2,
|
||||||
Activation = 3
|
Activation = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
RegistrationDialog(const float percentWidth, const float percentHeight, const Phase phase = Info);
|
RegistrationDialog(const float percentWidth, const float percentHeight, const Phase phase = Info);
|
||||||
@ -58,6 +58,7 @@ private:
|
|||||||
irr::core::stringw m_password_confirm;
|
irr::core::stringw m_password_confirm;
|
||||||
irr::core::stringw m_email;
|
irr::core::stringw m_email;
|
||||||
irr::core::stringw m_email_confirm;
|
irr::core::stringw m_email_confirm;
|
||||||
|
irr::core::stringw m_registration_error;
|
||||||
bool m_agreement;
|
bool m_agreement;
|
||||||
|
|
||||||
void showRegistrationInfo();
|
void showRegistrationInfo();
|
||||||
|
@ -26,8 +26,6 @@
|
|||||||
#include "challenges/unlock_manager.hpp"
|
#include "challenges/unlock_manager.hpp"
|
||||||
#include "graphics/irr_driver.hpp"
|
#include "graphics/irr_driver.hpp"
|
||||||
#include "guiengine/scalable_font.hpp"
|
#include "guiengine/scalable_font.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"
|
||||||
@ -36,6 +34,7 @@
|
|||||||
#include "states_screens/state_manager.hpp"
|
#include "states_screens/state_manager.hpp"
|
||||||
#include "states_screens/dialogs/login_dialog.hpp"
|
#include "states_screens/dialogs/login_dialog.hpp"
|
||||||
#include "states_screens/dialogs/message_dialog.hpp"
|
#include "states_screens/dialogs/message_dialog.hpp"
|
||||||
|
#include "states_screens/dialogs/registration_dialog.hpp"
|
||||||
#include "modes/demo_world.hpp"
|
#include "modes/demo_world.hpp"
|
||||||
#include "utils/translation.hpp"
|
#include "utils/translation.hpp"
|
||||||
|
|
||||||
@ -50,46 +49,86 @@ DEFINE_SCREEN_SINGLETON( OnlineScreen );
|
|||||||
|
|
||||||
OnlineScreen::OnlineScreen() : Screen("online/main.stkgui")
|
OnlineScreen::OnlineScreen() : Screen("online/main.stkgui")
|
||||||
{
|
{
|
||||||
|
m_recorded_state = Not;
|
||||||
} // OnlineScreen
|
} // OnlineScreen
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
void OnlineScreen::loadedFromFile()
|
void OnlineScreen::loadedFromFile()
|
||||||
{
|
{
|
||||||
Log::info("OnlineScreen", "Loaded from file");
|
//Box ? FIXME
|
||||||
|
m_top_menu_widget = getWidget<RibbonWidget>("menu_toprow");
|
||||||
|
assert(m_top_menu_widget != NULL);
|
||||||
|
m_quick_play_widget = (IconButtonWidget *) m_top_menu_widget->findWidgetNamed("quick_play");
|
||||||
|
assert(m_quick_play_widget != NULL);
|
||||||
|
m_find_server_widget = (IconButtonWidget *) m_top_menu_widget->findWidgetNamed("find_server");
|
||||||
|
assert(m_find_server_widget != NULL);
|
||||||
|
m_create_server_widget = (IconButtonWidget *) m_top_menu_widget->findWidgetNamed("create_server");
|
||||||
|
assert(m_create_server_widget != NULL);
|
||||||
|
|
||||||
|
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);
|
||||||
|
m_register_widget = (IconButtonWidget *) m_bottom_menu_widget->findWidgetNamed("register");
|
||||||
|
assert(m_register_widget != NULL);
|
||||||
|
m_sign_out_widget = (IconButtonWidget *) m_bottom_menu_widget->findWidgetNamed("sign_out");
|
||||||
|
assert(m_sign_out_widget != NULL);
|
||||||
|
|
||||||
} // loadedFromFile
|
} // loadedFromFile
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
bool OnlineScreen::hasStateChanged()
|
||||||
|
{
|
||||||
|
State previous_state = m_recorded_state;
|
||||||
|
if(CurrentOnlineUser::get()->isSignedIn())
|
||||||
|
{
|
||||||
|
if(CurrentOnlineUser::get()->isGuest())
|
||||||
|
m_recorded_state = Guest;
|
||||||
|
else
|
||||||
|
m_recorded_state = Registered;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_recorded_state = Not;
|
||||||
|
if (previous_state != m_recorded_state)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
void OnlineScreen::beforeAddingWidget()
|
void OnlineScreen::beforeAddingWidget()
|
||||||
{
|
{
|
||||||
Log::info("OnlineScreen", "Before adding widget");
|
//Set all children of the bottom menu visible (again)
|
||||||
RibbonWidget* topRow = getWidget<RibbonWidget>("menu_toprow");
|
for(int i = 0; i < m_bottom_menu_widget->getRibbonChildren().size(); i++)
|
||||||
assert(topRow != NULL);
|
m_bottom_menu_widget->getRibbonChildren()[i].setVisible(true);
|
||||||
RibbonWidget* bottomRow = getWidget<RibbonWidget>("menu_bottomrow");
|
|
||||||
assert(bottomRow != NULL);
|
//Remove all badges of the top menu
|
||||||
if(CurrentOnlineUser::get()->isSignedIn())
|
for(int i = 0; i < m_top_menu_widget->getRibbonChildren().size(); i++)
|
||||||
|
m_top_menu_widget->getRibbonChildren()[i].resetAllBadges();
|
||||||
|
|
||||||
|
hasStateChanged();
|
||||||
|
if (m_recorded_state == Registered)
|
||||||
{
|
{
|
||||||
|
m_register_widget->setVisible(false);
|
||||||
if(CurrentOnlineUser::get()->isGuest())
|
m_sign_in_widget->setVisible(false);
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//Signed in and not guest
|
|
||||||
bottomRow->removeChildNamed("sign_in");
|
|
||||||
}
|
|
||||||
bottomRow->removeChildNamed("sign_up");
|
|
||||||
}
|
}
|
||||||
else
|
else if (m_recorded_state == Not)
|
||||||
{
|
{
|
||||||
|
m_quick_play_widget->setBadge(LOCKED_BADGE);
|
||||||
//bottomRow->removeChildNamed("sign_out");
|
m_find_server_widget->setBadge(LOCKED_BADGE);
|
||||||
IconButtonWidget* iconbutton = getWidget<IconButtonWidget>("sign_out");
|
m_create_server_widget->setBadge(LOCKED_BADGE);
|
||||||
iconbutton->setVisible(false);
|
m_sign_out_widget->setVisible(false);
|
||||||
IconButtonWidget* quick_play = getWidget<IconButtonWidget>("quick_play");
|
|
||||||
quick_play->setVisible(false);
|
|
||||||
}
|
}
|
||||||
|
else if (m_recorded_state == Guest)
|
||||||
|
{
|
||||||
|
m_find_server_widget->setBadge(LOCKED_BADGE);
|
||||||
|
m_create_server_widget->setBadge(LOCKED_BADGE);
|
||||||
|
m_sign_in_widget->setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
} // beforeAddingWidget
|
} // beforeAddingWidget
|
||||||
|
|
||||||
|
|
||||||
@ -98,18 +137,16 @@ void OnlineScreen::beforeAddingWidget()
|
|||||||
void OnlineScreen::init()
|
void OnlineScreen::init()
|
||||||
{
|
{
|
||||||
Screen::init();
|
Screen::init();
|
||||||
m_online_status_widget = getWidget<LabelWidget>("online_status");
|
m_top_menu_widget->setFocusForPlayer(PLAYER_ID_GAME_MASTER);
|
||||||
assert(m_online_status_widget != NULL);
|
|
||||||
RibbonWidget* r = getWidget<RibbonWidget>("menu_bottomrow");
|
|
||||||
r->setFocusForPlayer(PLAYER_ID_GAME_MASTER);
|
|
||||||
DemoWorld::resetIdleTime();
|
DemoWorld::resetIdleTime();
|
||||||
m_online_status_widget->setText(irr::core::stringw("Signed in as : ") + CurrentOnlineUser::get()->getUserName(), true);
|
m_online_status_widget->setText(irr::core::stringw(_("Signed in as : ")) + CurrentOnlineUser::get()->getUserName() + ".", false);
|
||||||
} // init
|
} // init
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
void OnlineScreen::onUpdate(float delta, irr::video::IVideoDriver* driver)
|
void OnlineScreen::onUpdate(float delta, irr::video::IVideoDriver* driver)
|
||||||
{
|
{
|
||||||
|
if (hasStateChanged())
|
||||||
|
GUIEngine::reshowCurrentScreen();
|
||||||
} // onUpdate
|
} // onUpdate
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -134,25 +171,35 @@ void OnlineScreen::eventCallback(Widget* widget, const std::string& name, const
|
|||||||
if (CurrentOnlineUser::get()->signOut())
|
if (CurrentOnlineUser::get()->signOut())
|
||||||
{
|
{
|
||||||
new MessageDialog( _("Signed out successfully.") );
|
new MessageDialog( _("Signed out successfully.") );
|
||||||
GUIEngine::reshowCurrentScreen();
|
//GUIEngine::reshowCurrentScreen();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
new MessageDialog( _("An error occured while signing out.") );
|
new MessageDialog( _("An error occured while signing out.") );
|
||||||
}
|
}
|
||||||
|
else if (selection == "register")
|
||||||
|
{
|
||||||
|
new RegistrationDialog(0.8f, 0.9f);
|
||||||
}
|
}
|
||||||
else if (selection == "find_server")
|
else if (selection == "find_server")
|
||||||
{
|
{
|
||||||
new LoginDialog(LoginDialog::Registration_Required);
|
if (m_recorded_state == Registered)
|
||||||
|
new MessageDialog("Coming soon!");
|
||||||
|
else
|
||||||
|
new LoginDialog(LoginDialog::Registration_Required);
|
||||||
}
|
}
|
||||||
else if (selection == "create_server")
|
else if (selection == "create_server")
|
||||||
{
|
{
|
||||||
new LoginDialog(LoginDialog::Registration_Required);
|
if (m_recorded_state == Registered)
|
||||||
|
new MessageDialog("Coming soon!");
|
||||||
|
else
|
||||||
|
new LoginDialog(LoginDialog::Registration_Required);
|
||||||
}
|
}
|
||||||
else if (selection == "quick_play")
|
else if (selection == "quick_play")
|
||||||
{
|
{
|
||||||
new LoginDialog(LoginDialog::Signing_In_Required);
|
if (m_recorded_state == Registered || m_recorded_state == Guest)
|
||||||
|
new MessageDialog("Coming soon!");
|
||||||
|
else
|
||||||
|
new LoginDialog(LoginDialog::Signing_In_Required);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // eventCallback
|
} // eventCallback
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include "guiengine/screen.hpp"
|
#include "guiengine/screen.hpp"
|
||||||
#include "guiengine/widgets/label_widget.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; }
|
namespace GUIEngine { class Widget; class ListWidget; }
|
||||||
|
|
||||||
@ -33,7 +35,30 @@ private:
|
|||||||
friend class GUIEngine::ScreenSingleton<OnlineScreen>;
|
friend class GUIEngine::ScreenSingleton<OnlineScreen>;
|
||||||
|
|
||||||
OnlineScreen();
|
OnlineScreen();
|
||||||
GUIEngine::LabelWidget* m_online_status_widget;
|
|
||||||
|
GUIEngine::RibbonWidget * m_top_menu_widget;
|
||||||
|
GUIEngine::IconButtonWidget * m_quick_play_widget;
|
||||||
|
GUIEngine::IconButtonWidget * m_find_server_widget;
|
||||||
|
GUIEngine::IconButtonWidget * m_create_server_widget;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
enum State
|
||||||
|
{
|
||||||
|
Not = 1,
|
||||||
|
Guest = 2,
|
||||||
|
Registered = 4
|
||||||
|
};
|
||||||
|
|
||||||
|
State m_recorded_state;
|
||||||
|
|
||||||
|
/** \brief Checks if the recorded state differs from the actual state and sets it. */
|
||||||
|
bool hasStateChanged();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user