diff options
author | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2009-10-06 23:40:55 +0200 |
---|---|---|
committer | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2009-10-06 23:43:40 +0200 |
commit | 64a37da4cb8d74a29f369e96e8c3669275516394 (patch) | |
tree | caa0eb0d05ab5674b6b6ac822d151aa2585721e8 /src/net/ea/loginhandler.cpp | |
parent | 610dc30ceecdfe538f71826689630e0f28c278cc (diff) | |
download | Mana-64a37da4cb8d74a29f369e96e8c3669275516394.tar.gz Mana-64a37da4cb8d74a29f369e96e8c3669275516394.tar.bz2 Mana-64a37da4cb8d74a29f369e96e8c3669275516394.tar.xz Mana-64a37da4cb8d74a29f369e96e8c3669275516394.zip |
Some cleanup regarding keeping track of gender for eAthena
LoginHandler now owns the world list and the token, instead of having
them as global variables with pointers to the 'sex' member of the token
from the GUI.
Diffstat (limited to 'src/net/ea/loginhandler.cpp')
-rw-r--r-- | src/net/ea/loginhandler.cpp | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/src/net/ea/loginhandler.cpp b/src/net/ea/loginhandler.cpp index be547afa..5a77cce7 100644 --- a/src/net/ea/loginhandler.cpp +++ b/src/net/ea/loginhandler.cpp @@ -38,9 +38,8 @@ Net::LoginHandler *loginHandler; namespace EAthena { -extern Token netToken; + extern ServerInfo charServer; -extern Worlds worlds; LoginHandler::LoginHandler() { @@ -107,16 +106,16 @@ void LoginHandler::handleMessage(MessageIn &msg) // Skip the length word msg.skip(2); - delete_all(worlds); + clearWorlds(); + worldCount = (msg.getLength() - 47) / 32; - netToken.session_ID1 = msg.readInt32(); - netToken.account_ID = msg.readInt32(); - netToken.session_ID2 = msg.readInt32(); + mToken.session_ID1 = msg.readInt32(); + mToken.account_ID = msg.readInt32(); + mToken.session_ID2 = msg.readInt32(); msg.skip(30); // unknown - netToken.sex = msg.readInt8() ? GENDER_MALE : GENDER_FEMALE; + mToken.sex = msg.readInt8() ? GENDER_MALE : GENDER_FEMALE; - worlds.clear(); for (int i = 0; i < worldCount; i++) { WorldInfo *world = new WorldInfo; @@ -133,7 +132,7 @@ void LoginHandler::handleMessage(MessageIn &msg) ipToString(world->address), world->port); - worlds.push_back(world); + mWorlds.push_back(world); } state = STATE_WORLD_SELECT; break; @@ -236,12 +235,12 @@ void LoginHandler::changePassword(const std::string &username, void LoginHandler::chooseServer(unsigned int server) { - if (server >= worlds.size()) + if (server >= mWorlds.size()) return; charServer.clear(); - charServer.hostname = ipToString(worlds[server]->address); - charServer.port = worlds[server]->port; + charServer.hostname = ipToString(mWorlds[server]->address); + charServer.port = mWorlds[server]->port; state = STATE_UPDATE; } @@ -249,7 +248,7 @@ void LoginHandler::chooseServer(unsigned int server) void LoginHandler::registerAccount(LoginData *loginData) { std::string username = loginData->username; - username.append((netToken.sex == GENDER_FEMALE) ? "_F" : "_M"); + username.append((loginData->gender == GENDER_FEMALE) ? "_F" : "_M"); sendLoginRegister(username, loginData->password); } @@ -277,9 +276,15 @@ void LoginHandler::sendLoginRegister(const std::string &username, outMsg.writeInt8(0x03); } -Worlds LoginHandler::getWorlds() +Worlds LoginHandler::getWorlds() const +{ + return mWorlds; +} + +void LoginHandler::clearWorlds() { - return worlds; + delete_all(mWorlds); + mWorlds.clear(); } } // namespace EAthena |