diff options
author | Jared Adams <jaxad0127@gmail.com> | 2009-09-30 19:54:06 -0600 |
---|---|---|
committer | Jared Adams <jaxad0127@gmail.com> | 2009-09-30 19:54:06 -0600 |
commit | d4f32a38fd498c180d562ced38a9129e0abf2252 (patch) | |
tree | e655b59ff686ad5fe2bdd11d6e072f5c3a4493b7 /src/net/tmwserv/loginhandler.cpp | |
parent | 6707d108790ab1fe1d4a3ef52d717966990fdf0a (diff) | |
download | mana-client-d4f32a38fd498c180d562ced38a9129e0abf2252.tar.gz mana-client-d4f32a38fd498c180d562ced38a9129e0abf2252.tar.bz2 mana-client-d4f32a38fd498c180d562ced38a9129e0abf2252.tar.xz mana-client-d4f32a38fd498c180d562ced38a9129e0abf2252.zip |
Merge login state machines for both clients
Also do some cleanup and refactoring of related code.
Diffstat (limited to 'src/net/tmwserv/loginhandler.cpp')
-rw-r--r-- | src/net/tmwserv/loginhandler.cpp | 78 |
1 files changed, 75 insertions, 3 deletions
diff --git a/src/net/tmwserv/loginhandler.cpp b/src/net/tmwserv/loginhandler.cpp index f728d831..74b8abad 100644 --- a/src/net/tmwserv/loginhandler.cpp +++ b/src/net/tmwserv/loginhandler.cpp @@ -48,6 +48,8 @@ LoginHandler::LoginHandler() APMSG_RECONNECT_RESPONSE, APMSG_PASSWORD_CHANGE_RESPONSE, APMSG_EMAIL_CHANGE_RESPONSE, + APMSG_LOGOUT_RESPONSE, + APMSG_UNREGISTER_RESPONSE, 0 }; handledMessages = _messages; @@ -156,7 +158,54 @@ void LoginHandler::handleMessage(MessageIn &msg) } } break; + case APMSG_LOGOUT_RESPONSE: + { + int errMsg = msg.readInt8(); + // Successful logout + if (errMsg == ERRMSG_OK) + { + // TODO: handle logout + } + // Logout failed + else + { + switch (errMsg) { + case ERRMSG_NO_LOGIN: + errorMessage = "Accountserver: Not logged in"; + break; + default: + errorMessage = "Accountserver: Unknown error"; + break; + } + state = STATE_ERROR; + } + } + break; + case APMSG_UNREGISTER_RESPONSE: + { + int errMsg = msg.readInt8(); + // Successful unregistration + if (errMsg == ERRMSG_OK) + { + state = STATE_UNREGISTER; + } + // Unregistration failed + else + { + switch (errMsg) { + case ERRMSG_INVALID_ARGUMENT: + errorMessage = + "Accountserver: Wrong username or password"; + break; + default: + errorMessage = "Accountserver: Unknown error"; + break; + } + state = STATE_ACCOUNTCHANGE_ERROR; + } + } + break; } } @@ -167,7 +216,8 @@ void LoginHandler::handleLoginResponse(MessageIn &msg) if (errMsg == ERRMSG_OK) { readUpdateHost(msg); - state = STATE_CHAR_SELECT; + // No worlds atm, but future use :-D + state = STATE_WORLD_SELECT; } else { @@ -199,7 +249,7 @@ void LoginHandler::handleRegisterResponse(MessageIn &msg) if (errMsg == ERRMSG_OK) { readUpdateHost(msg); - state = STATE_CHAR_SELECT; + state = STATE_WORLD_SELECT; } else { @@ -233,6 +283,23 @@ void LoginHandler::readUpdateHost(MessageIn &msg) } } +void LoginHandler::connect() +{ + accountServerConnection->connect(mServer.hostname, mServer.port); + /*if (state == STATE_CONNECT_SERVER) + state = STATE_LOGIN;*/ +} + +bool LoginHandler::isConnected() +{ + return accountServerConnection->isConnected(); +} + +void LoginHandler::disconnect() +{ + accountServerConnection->disconnect(); +} + void LoginHandler::loginAccount(LoginData *loginData) { mLoginData = loginData; @@ -255,7 +322,7 @@ void LoginHandler::changePassword(const std::string &username, newPassword); } -void LoginHandler::chooseServer(int server) +void LoginHandler::chooseServer(unsigned int server) { // TODO } @@ -275,4 +342,9 @@ void LoginHandler::unregisterAccount(const std::string &username, Net::AccountServer::Account::unregister(username, password); } +Worlds LoginHandler::getWorlds() +{ + return Worlds(); +} + } // namespace TmwServ |