diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | src/gui/char_select.cpp | 4 | ||||
-rw-r--r-- | src/main.cpp | 7 |
3 files changed, 14 insertions, 0 deletions
@@ -7,6 +7,9 @@ 2006-09-14 Björn Steinbrink <B.Steinbrink@gmx.de> + * src/gui/char_select.cpp, src/main.cpp: Fix the character name + matching loop and add support for saving the last used character + (based on a patch by Andrew Harrison). * src/gui/char_select.cpp, src/gui/char_select.h, src/main.cpp: Clean up the player selection stuff, it's a bit nicer now. * src/main.cpp: Fix up the player selection command line option. diff --git a/src/gui/char_select.cpp b/src/gui/char_select.cpp index 6da0f64d..4aacd40e 100644 --- a/src/gui/char_select.cpp +++ b/src/gui/char_select.cpp @@ -23,6 +23,7 @@ #include "char_select.h" +#include <iostream> #include <string> #include <guichan/widgets/label.hpp> @@ -238,9 +239,12 @@ bool CharSelectDialog::selectByName(const std::string &name) mCharInfo->select(0); do { LocalPlayer *player = mCharInfo->getEntry(); + std::cout << name << " " << (player ? player->getName() : "") << "\n"; if (player && player->getName() == name) return true; + + mCharInfo->next(); } while (mCharInfo->getPos()); mCharInfo->select(oldPos); diff --git a/src/main.cpp b/src/main.cpp index 0d4b54d7..08fc7a56 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -468,6 +468,10 @@ void charLogin(Network *network, LoginData *loginData) void mapLogin(Network *network, LoginData *loginData) { + logger->log("Memorizing selected character %s", + player_node->getName().c_str()); + config.setValue("lastCharacter", player_node->getName()); + MessageOut outMsg(network); logger->log("Trying to connect to map server..."); @@ -657,6 +661,9 @@ int main(int argc, char *argv[]) if (((CharSelectDialog*)currentDialog)-> selectByName(options.playername)) options.chooseDefault = true; + else + ((CharSelectDialog*)currentDialog)->selectByName( + config.getValue("lastCharacter", "")); if (options.chooseDefault) ((CharSelectDialog*)currentDialog)->action("ok", NULL); |