diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/char_select.cpp | 20 | ||||
-rw-r--r-- | src/gui/char_select.h | 2 | ||||
-rw-r--r-- | src/main.cpp | 17 |
3 files changed, 25 insertions, 14 deletions
diff --git a/src/gui/char_select.cpp b/src/gui/char_select.cpp index c52f73a9..6da0f64d 100644 --- a/src/gui/char_select.cpp +++ b/src/gui/char_select.cpp @@ -228,6 +228,26 @@ void CharSelectDialog::logic() updatePlayerInfo(); } +bool CharSelectDialog::selectByName(const std::string &name) +{ + if (mCharInfo->isLocked()) + return false; + + unsigned int oldPos = mCharInfo->getPos(); + + mCharInfo->select(0); + do { + LocalPlayer *player = mCharInfo->getEntry(); + + if (player && player->getName() == name) + return true; + } while (mCharInfo->getPos()); + + mCharInfo->select(oldPos); + + return false; +} + std::string CharSelectDialog::getName() { return mNameLabel->getCaption(); diff --git a/src/gui/char_select.h b/src/gui/char_select.h index 6784c073..0a1b5eac 100644 --- a/src/gui/char_select.h +++ b/src/gui/char_select.h @@ -57,6 +57,8 @@ class CharSelectDialog : public Window, public gcn::ActionListener void logic(); + bool selectByName(const std::string &name); + /** * Returns name of selected player */ diff --git a/src/main.cpp b/src/main.cpp index 127b2a84..0d4b54d7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -654,20 +654,9 @@ int main(int argc, char *argv[]) currentDialog = new CharSelectDialog(network, &charInfo, 1 - loginData.sex); - if (options.playername != "") { - charInfo.select(0); - do { - LocalPlayer *player = charInfo.getEntry(); - - if (player && player->getName() == - options.playername) { - options.chooseDefault = true; - break; - } - - charInfo.next(); - } while (charInfo.getPos()); - } + if (((CharSelectDialog*)currentDialog)-> + selectByName(options.playername)) + options.chooseDefault = true; if (options.chooseDefault) ((CharSelectDialog*)currentDialog)->action("ok", NULL); |