void Client::showOkDialog(const std::string &title, const std::string &message, State state) { OkDialog *okDialog = new OkDialog(title, message); okDialog->addActionListener(this); mStateAfterOkDialog = state; }
void UnRegisterDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "cancel") { state = STATE_CHAR_SELECT; } else if (event.getId() == "unregister") { const std::string username = mLoginData->username.c_str(); const std::string password = mPasswordField->getText(); logger->log("UnregisterDialog::unregistered, Username is %s", username.c_str()); std::stringstream errorMessage; bool error = false; unsigned int min = Net::getLoginHandler()->getMinPasswordLength(); unsigned int max = Net::getLoginHandler()->getMaxPasswordLength(); // Check password if (password.length() < min) { // Pass too short errorMessage << strprintf(_("The password needs to be at least %d " "characters long."), min); error = true; } else if (password.length() > max - 1) { // Pass too long errorMessage << strprintf(_("The password needs to be less than " "%d characters long."), max); error = true; } if (error) { mWrongDataNoticeListener->setTarget(this->mPasswordField); OkDialog *dlg = new OkDialog(_("Error"), errorMessage.str()); dlg->addActionListener(mWrongDataNoticeListener); } else { // No errors detected, unregister the new user. mUnRegisterButton->setEnabled(false); mLoginData->password = password; state = STATE_UNREGISTER_ATTEMPT; } } }
void BeingHandler::handleBeingActionChangeMessage(Net::MessageIn &msg) { Being *being = actorSpriteManager->findBeing(msg.readInt16()); Being::Action action = (Being::Action) msg.readInt8(); if (!being) return; being->setAction(action); if (action == Being::DEAD && being == player_node) { static char const *const deadMsg[] = { _("You are dead."), _("We regret to inform you that your character was killed in " "battle."), _("You are not that alive anymore."), _("The cold hands of the grim reaper are grabbing for your soul."), _("Game Over!"), _("No, kids. Your character did not really die. It... err... " "went to a better place."), _("Your plan of breaking your enemies weapon by bashing it with " "your throat failed."), _("I guess this did not run too well."), _("Do you want your possessions identified?"), // Nethack reference _("Sadly, no trace of you was ever found..."), // Secret of Mana reference _("Annihilated."), // Final Fantasy VI reference _("Looks like you got your head handed to you."), // Earthbound reference _("You screwed up again, dump your body down the tubes and get " "you another one.") // Leisure Suit Larry 1 Reference }; std::string message(deadMsg[rand()%13]); message.append(std::string(" ") + _("Press OK to respawn.")); OkDialog *dlg = new OkDialog(_("You Died"), message, false); dlg->addActionListener(&(ManaServ::respawnListener)); } }
void EditServerDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "ok") { // Give focus back to the server dialog. mServerAddressField->requestFocus(); } if (event.getId() == "addServer") { // Check the given information if (mServerAddressField->getText().empty() || mPortField->getText().empty()) { OkDialog *dlg = new OkDialog(_("Error"), _("Please at least type both the address and the port " "of the server."), DIALOG_ERROR); dlg->addActionListener(this); } else { mCancelButton->setEnabled(false); mOkButton->setEnabled(false); mServer.name = mNameField->getText(); mServer.description = mDescriptionField->getText(); mServer.hostname = mServerAddressField->getText(); mServer.port = static_cast<short>(atoi( mPortField->getText().c_str())); if (mTypeField) { switch (mTypeField->getSelected()) { case 0: mServer.type = ServerInfo::TMWATHENA; break; case 1: mServer.type = ServerInfo::EVOL; break; #ifdef EATHENA_SUPPORT case 2: mServer.type = ServerInfo::EATHENA; break; #ifdef MANASERV_SUPPORT case 3: mServer.type = ServerInfo::MANASERV; break; #endif #else #ifdef MANASERV_SUPPORT case 2: mServer.type = ServerInfo::MANASERV; break; #endif #endif default: mServer.type = ServerInfo::UNKNOWN; } } else { mServer.type = ServerInfo::TMWATHENA; } // Tell the server has to be saved mServer.save = true; //Add server mServerDialog->updateServer(mServer, mIndex); scheduleDelete(); } } else if (event.getId() == "cancel") { scheduleDelete(); } }
void ServerDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "ok") { // Give focus back to the server dialog. mServerNameField->requestFocus(); } else if (event.getId() == "connect") { // Check login if (mServerNameField->getText().empty() || mPortField->getText().empty()) { OkDialog *dlg = new OkDialog(_("Error"), _("Please type both the address and the port of a server.")); dlg->addActionListener(this); } else { mDownload->cancel(); mQuitButton->setEnabled(false); mConnectButton->setEnabled(false); mServerInfo->hostname = mServerNameField->getText(); mServerInfo->port = (short) atoi(mPortField->getText().c_str()); switch (mTypeField->getSelected()) { case 0: mServerInfo->type = ServerInfo::TMWATHENA; break; case 1: mServerInfo->type = ServerInfo::MANASERV; break; default: mServerInfo->type = ServerInfo::UNKNOWN; } // Save the selected server mServerInfo->save = true; chatLogger->setServerName(mServerInfo->hostname); saveCustomServers(*mServerInfo); Client::setState(STATE_CONNECT_SERVER); } } else if (event.getId() == "quit") { mDownload->cancel(); Client::setState(STATE_FORCE_QUIT); } else if (event.getId() == "addEntry") { setFieldsReadOnly(false); } else if (event.getId() == "remove") { int index = mServersList->getSelected(); mServers.erase(mServers.begin() + index); mServersList->setSelected(0); saveCustomServers(); } }
void ServerDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "ok") { // Give focus back to the server dialog. mServersList->requestFocus(); } else if (event.getId() == "connect") { int index = mServersList->getSelected(); // Check login if (index < 0 #ifndef MANASERV_SUPPORT || mServersListModel->getServer(index).type == ServerInfo::MANASERV #endif ) { OkDialog *dlg = new OkDialog(_("Error"), _("Please select a valid server.")); dlg->addActionListener(this); } else { mDownload->cancel(); mQuitButton->setEnabled(false); mConnectButton->setEnabled(false); mDeleteButton->setEnabled(false); mManualEntryButton->setEnabled(false); mModifyButton->setEnabled(false); const ServerInfo &serverInfo = mServersListModel->getServer(index); mServerInfo->hostname = serverInfo.hostname; mServerInfo->name = serverInfo.name; mServerInfo->port = serverInfo.port; mServerInfo->type = serverInfo.type; // Save the selected server mServerInfo->save = true; saveCustomServers(*mServerInfo); chatLogger->setServerName(mServerInfo->hostname); Client::setState(STATE_CONNECT_SERVER); } } else if (event.getId() == "quit") { mDownload->cancel(); Client::setState(STATE_FORCE_QUIT); } else if (event.getId() == "addEntry") { // Add a custom server: It will delete itself using guichan logic. new CustomServerDialog(this); } else if (event.getId() == "modify") { int index = mServersList->getSelected(); // Check whether a server is selected. if (index < 0) { OkDialog *dlg = new OkDialog(_("Error"), _("Please select a custom server.")); dlg->addActionListener(this); } else { new CustomServerDialog(this, index); } } else if (event.getId() == "remove") { int index = mServersList->getSelected(); mServers.erase(mServers.begin() + index); mServersList->setSelected(0); saveCustomServers(); } }
void ChangePasswordDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "cancel") { scheduleDelete(); } else if (event.getId() == "change_password") { const std::string username = mLoginData->username.c_str(); const std::string oldPassword = mOldPassField->getText(); const std::string newFirstPass = mFirstPassField->getText(); const std::string newSecondPass = mSecondPassField->getText(); logger->log("ChangePasswordDialog::Password change, Username is %s", username.c_str()); std::stringstream errorMessage; int error = 0; // Check old Password if (oldPassword.empty()) { // No old password errorMessage << _("Enter the old password first."); error = 1; } else if (newFirstPass.length() < LEN_MIN_PASSWORD) { // First password too short errorMessage << strprintf(_("The new password needs to be at least " "%d characters long."), LEN_MIN_PASSWORD); error = 2; } else if (newFirstPass.length() > LEN_MAX_PASSWORD - 1 ) { // First password too long errorMessage << strprintf(_("The new password needs to be less " "than %d characters long."), LEN_MAX_PASSWORD); error = 2; } else if (newFirstPass != newSecondPass) { // Second Pass mismatch errorMessage << _("The new password entries mismatch."); error = 3; } if (error > 0) { if (error == 1) { mWrongDataNoticeListener->setTarget(this->mOldPassField); } else if (error == 2) { mWrongDataNoticeListener->setTarget(this->mFirstPassField); } else if (error == 3) { mWrongDataNoticeListener->setTarget(this->mSecondPassField); } OkDialog *dlg = new OkDialog(_("Error"), errorMessage.str()); dlg->addActionListener(mWrongDataNoticeListener); } else { // No errors detected, change account password. mChangePassButton->setEnabled(false); // Set the new password mLoginData->password = oldPassword; mLoginData->newPassword = newFirstPass; state = STATE_CHANGEPASSWORD_ATTEMPT; scheduleDelete(); } } }
void RegisterDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "cancel") { Client::setState(STATE_LOGIN); } else if (event.getId() == "register" && canSubmit()) { const std::string user = mUserField->getText(); logger->log("RegisterDialog::register Username is %s", user.c_str()); std::string errorMessage; int error = 0; unsigned int minUser = Net::getLoginHandler()->getMinUserNameLength(); unsigned int maxUser = Net::getLoginHandler()->getMaxUserNameLength(); unsigned int minPass = Net::getLoginHandler()->getMinPasswordLength(); unsigned int maxPass = Net::getLoginHandler()->getMaxPasswordLength(); if (user.length() < minUser) { // Name too short errorMessage = strprintf (_("The username needs to be at least %d characters long."), minUser); error = 1; } else if (user.length() > maxUser - 1 ) { // Name too long errorMessage = strprintf (_("The username needs to be less than %d characters long."), maxUser); error = 1; } else if (mPasswordField->getText().length() < minPass) { // Pass too short errorMessage = strprintf (_("The password needs to be at least %d characters long."), minPass); error = 2; } else if (mPasswordField->getText().length() > maxPass - 1 ) { // Pass too long errorMessage = strprintf (_("The password needs to be less than %d characters long."), maxPass); error = 2; } else if (mPasswordField->getText() != mConfirmField->getText()) { // Password does not match with the confirmation one errorMessage = _("Passwords do not match."); error = 2; } // TODO: Check if a valid email address was given if (error > 0) { if (error == 1) { mWrongDataNoticeListener->setTarget(this->mUserField); } else if (error == 2) { // Reset password confirmation mPasswordField->setText(""); mConfirmField->setText(""); mWrongDataNoticeListener->setTarget(this->mPasswordField); } OkDialog *dlg = new OkDialog(_("Error"), errorMessage); dlg->addActionListener(mWrongDataNoticeListener); } else { // No errors detected, register the new user. mRegisterButton->setEnabled(false); mLoginData->username = mUserField->getText(); mLoginData->password = mPasswordField->getText(); if (mFemaleButton) mLoginData->gender = mFemaleButton->isSelected() ? GENDER_FEMALE : GENDER_MALE; if (mEmailField) mLoginData->email = mEmailField->getText(); mLoginData->registerLogin = true; Client::setState(STATE_REGISTER_ATTEMPT); } } }