Minor refactoring and coding style fixes.

This commit is contained in:
hiker 2015-10-20 09:34:14 +11:00
parent d5a9364ece
commit 46b4d275a9
2 changed files with 105 additions and 123 deletions

View File

@ -56,7 +56,7 @@ void CreateServerScreen::loadedFromFile()
{
m_name_widget = getWidget<TextBoxWidget>("name");
assert(m_name_widget != NULL);
m_name_widget->setText(_("%s's server", PlayerManager::getCurrentOnlineUserName()));
m_max_players_widget = getWidget<SpinnerWidget>("max_players");
assert(m_max_players_widget != NULL);
m_max_players_widget->setValue(8);
@ -73,114 +73,28 @@ void CreateServerScreen::loadedFromFile()
} // loadedFromFile
// ----------------------------------------------------------------------------
void CreateServerScreen::beforeAddingWidget()
{
} // beforeAddingWidget
// ----------------------------------------------------------------------------
void CreateServerScreen::init()
{
Screen::init();
setInitialFocus();
DemoWorld::resetIdleTime();
m_info_widget->setText("", false);
LabelWidget *title = getWidget<LabelWidget>("title");
title->setText(m_is_lan ? _("Create LAN Server")
: _("Create Server") , false);
// I18n: Name of the server. %s is either the online or local user name
m_name_widget->setText(_("%s's server",
m_is_lan ? PlayerManager::getCurrentPlayer()->getName()
: PlayerManager::getCurrentOnlineUserName()
)
);
} // init
// ----------------------------------------------------------------------------
void CreateServerScreen::onUpdate(float delta)
{
if(m_server_creation_request != NULL)
{
if(m_server_creation_request->isDone())
{
if(m_server_creation_request->isSuccess())
{
new ServerInfoDialog(m_server_creation_request->getCreatedServerID(),
true);
}
else
{
SFXManager::get()->quickSound( "anvil" );
m_info_widget->setErrorColor();
m_info_widget->setText(m_server_creation_request->getInfo(), false);
}
delete m_server_creation_request;
m_server_creation_request = NULL;
//m_options_widget->setActive(true);
}
else
{
m_info_widget->setDefaultColor();
m_info_widget->setText(StringUtils::loadingDots(_("Creating server")),
false);
}
}
} // onUpdate
// ----------------------------------------------------------------------------
void CreateServerScreen::serverCreationRequest()
{
if (m_is_lan)
{
const irr::core::stringw name = m_name_widget->getText().trim();
const int max_players = m_max_players_widget->getValue();
Server *server = new Server(name, /*lan*/true, max_players,
/*current_player*/1);
ServersManager::get()->addServer(server);
return;
}
// Now must be WAN: forward request to the stk server
const irr::core::stringw name = m_name_widget->getText().trim();
const int max_players = m_max_players_widget->getValue();
m_info_widget->setErrorColor();
if (name.size() < 4 || name.size() > 30)
{
m_info_widget->setText(
_("Name has to be between 4 and 30 characters long!"), false);
}
else if (max_players < 2 || max_players > 12)
{
m_info_widget->setText(
_("The maxinum number of players has to be between 2 and 12."), false);
}
else
{
m_server_creation_request = new ServerCreationRequest();
PlayerManager::setUserDetails(m_server_creation_request, "create",
Online::API::SERVER_PATH);
m_server_creation_request->addParameter("name", name);
m_server_creation_request->addParameter("max_players", max_players);
m_server_creation_request->queue();
return;
}
SFXManager::get()->quickSound("anvil");
} // serverCreationRequest
// ----------------------------------------------------------------------------
/** Callbacks from the online create server request.
/** Event callback which starts the server creation process.
*/
void CreateServerScreen::ServerCreationRequest::callback()
{
if (isSuccess())
{
// Must be a WAN server
Server *server = new Server(*getXMLData()->getNode("server"),
/*is lan*/false);
ServersManager::get()->addServer(server);
m_created_server_id = server->getServerId();
} // isSuccess
} // callback
// ----------------------------------------------------------------------------
void CreateServerScreen::eventCallback(Widget* widget, const std::string& name,
const int playerID)
{
@ -199,6 +113,102 @@ void CreateServerScreen::eventCallback(Widget* widget, const std::string& name,
}
} // eventCallback
// ----------------------------------------------------------------------------
/** Called once per framce to check if the server creation request has
* finished. If so, if pushes the server creation sceen.
*/
void CreateServerScreen::onUpdate(float delta)
{
if (!m_server_creation_request) return;
// If the request is not ready, wait till it is done.
if (!m_server_creation_request->isDone())
{
m_info_widget->setDefaultColor();
m_info_widget->setText(StringUtils::loadingDots(_("Creating server")),
false);
return;
}
// Now the request has been executed.
// ----------------------------------
if (m_server_creation_request->isSuccess())
{
new ServerInfoDialog(m_server_creation_request->getCreatedServerID(),
true);
}
else
{
SFXManager::get()->quickSound("anvil");
m_info_widget->setErrorColor();
m_info_widget->setText(m_server_creation_request->getInfo(), false);
}
delete m_server_creation_request;
m_server_creation_request = NULL;
} // onUpdate
// ----------------------------------------------------------------------------
/** In case of WAN it adds the server to the list of servers. In case of LAN
* networking, it registers this game server with the stk server.
*/
void CreateServerScreen::serverCreationRequest()
{
const irr::core::stringw name = m_name_widget->getText().trim();
const int max_players = m_max_players_widget->getValue();
m_info_widget->setErrorColor();
if (name.size() < 4 || name.size() > 30)
{
m_info_widget->setText(
_("Name has to be between 4 and 30 characters long!"), false);
SFXManager::get()->quickSound("anvil");
return;
}
else if (max_players < 2 || max_players > 12)
{
m_info_widget->setText(
_("The maxinum number of players has to be between 2 and 12."),
false);
SFXManager::get()->quickSound("anvil");
return;
}
if (m_is_lan)
{
const irr::core::stringw name = m_name_widget->getText().trim();
const int max_players = m_max_players_widget->getValue();
Server *server = new Server(name, /*lan*/true, max_players,
/*current_player*/1);
ServersManager::get()->addServer(server);
new ServerInfoDialog(server->getServerId(), true);
return;
}
// Now must be WAN: forward request to the stk server
m_server_creation_request = new ServerCreationRequest();
PlayerManager::setUserDetails(m_server_creation_request, "create",
Online::API::SERVER_PATH);
m_server_creation_request->addParameter("name", name);
m_server_creation_request->addParameter("max_players", max_players);
m_server_creation_request->queue();
} // serverCreationRequest
// ----------------------------------------------------------------------------
/** Callbacks from the online create server request.
*/
void CreateServerScreen::ServerCreationRequest::callback()
{
if (isSuccess())
{
// Must be a WAN server
Server *server = new Server(*getXMLData()->getNode("server"),
/*is lan*/false);
ServersManager::get()->addServer(server);
m_created_server_id = server->getServerId();
} // isSuccess
} // callback
// ----------------------------------------------------------------------------
void CreateServerScreen::tearDown()
@ -207,19 +217,3 @@ void CreateServerScreen::tearDown()
m_server_creation_request = NULL;
} // tearDown
// ----------------------------------------------------------------------------
void CreateServerScreen::onDisabledItemClicked(const std::string& item)
{
} // onDisabledItemClicked
// ----------------------------------------------------------------------------
void CreateServerScreen::setInitialFocus()
{
} // setInitialFocus
// ----------------------------------------------------------------------------
void CreateServerScreen::onDialogClose()
{
setInitialFocus();
} // onDialogClose()

View File

@ -66,9 +66,6 @@ private:
ServerCreationRequest *m_server_creation_request;
/** \brief Sets which widget has to be focused. Depends on the user state. */
void setInitialFocus();
void serverCreationRequest();
public:
@ -82,21 +79,12 @@ public:
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;
// ------------------------------------------------------------------------
/** Sets if a lan or wan server is to be created. */
void setIsLan(bool is_lan) { m_is_lan = is_lan; }