void CharSelectDialog::action(const gcn::ActionEvent &event) { // Check if a button of a character was pressed const gcn::Widget *sourceParent = event.getSource()->getParent(); int selected = -1; for (int i = 0; i < (int)mCharacterEntries.size(); ++i) { if (mCharacterEntries[i] == sourceParent) { selected = i; break; } } const std::string &eventId = event.getId(); if (selected != -1) { if (eventId == "use") { attemptCharacterSelect(selected); } else if (eventId == "new" && !mCharacterEntries[selected]->getCharacter()) { // Start new character dialog CharCreateDialog *charCreateDialog = new CharCreateDialog(this, selected); mCharHandler->setCharCreateDialog(charCreateDialog); } else if (eventId == "delete" && mCharacterEntries[selected]->getCharacter()) { new CharDeleteConfirm(this, selected); } } else if (eventId == "switch") { Client::setState(STATE_SWITCH_LOGIN); } else if (eventId == "change_password") { Client::setState(STATE_CHANGEPASSWORD); } else if (eventId == "change_email") { Client::setState(STATE_CHANGEEMAIL); } else if (eventId == "unregister") { Client::setState(STATE_UNREGISTER); } }
bool CharSelectDialog::selectByName(const std::string &name, SelectAction action) { if (mLocked) return false; for (int i = 0; i < (int)mCharacterEntries.size(); ++i) { if (Net::Character *character = mCharacterEntries[i]->getCharacter()) { if (character->dummy->getName() == name) { mCharacterEntries[i]->requestFocus(); if (action == Choose) attemptCharacterSelect(i); return true; } } } return false; }
void CharSelectDialog::action(const gcn::ActionEvent &event) { // Check if a button of a character was pressed const gcn::Widget *sourceParent = event.getSource()->getParent(); int selected = -1; for (int i = 0; i < static_cast<int>(mCharacterEntries.size()); ++i) { if (mCharacterEntries[i] == sourceParent) { selected = i; break; } } const std::string &eventId = event.getId(); if (selected >= 0) { if (eventId == "use") { attemptCharacterSelect(selected); } else if (eventId == "new" && !mCharacterEntries[selected]->getCharacter()) { // Start new character dialog CharCreateDialog *charCreateDialog = new CharCreateDialog(this, selected); mCharHandler->setCharCreateDialog(charCreateDialog); } else if (eventId == "delete" && mCharacterEntries[selected]->getCharacter()) { new CharDeleteConfirm(this, selected); } } else if (eventId == "switch") { Client::setState(STATE_SWITCH_LOGIN); } else if (eventId == "change_password") { Client::setState(STATE_CHANGEPASSWORD); } else if (eventId == "change_email") { Client::setState(STATE_CHANGEEMAIL); } else if (eventId == "unregister") { Client::setState(STATE_UNREGISTER); } else if (eventId == "try delete character") { if (mDeleteDialog && mDeleteIndex != -1 && mDeleteDialog->getText() == LoginDialog::savedPassword) { attemptCharacterDelete(mDeleteIndex); mDeleteDialog = nullptr; } else { new OkDialog(_("Error"), _("Incorrect password"), DIALOG_ERROR); } mDeleteIndex = -1; } }