diff options
Diffstat (limited to 'src/progs/manaverse/client.cpp')
-rw-r--r-- | src/progs/manaverse/client.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/progs/manaverse/client.cpp b/src/progs/manaverse/client.cpp index eb299dcbe..980ffdc91 100644 --- a/src/progs/manaverse/client.cpp +++ b/src/progs/manaverse/client.cpp @@ -1580,6 +1580,34 @@ int Client::gameExec() BLOCK_END("Client::gameExec State::SWITCH_SERVER") break; + case State::SWITCH_WORLD: + BLOCK_START("Client::gameExec State::SWITCH_WORLD") + logger->log1("State: SWITCH WORLD"); + + if (loginHandler != nullptr) + { + loginHandler->logout(); + loginHandler->disconnect(); + } + if (gameHandler != nullptr) + gameHandler->disconnect(); + if (loginHandler != nullptr) + loginHandler->connect(); + + if (loginHandler != nullptr && + loginHandler->getWorlds().size() > 1) + { + mState = State::LOGIN_ATTEMPT; + } + else + { + settings.login.clear(); + WindowManager::updateTitle(); + mState = State::LOGIN; + } + BLOCK_END("Client::gameExec State::SWITCH_WORLD") + break; + case State::SWITCH_LOGIN: BLOCK_START("Client::gameExec State::SWITCH_LOGIN") logger->log1("State: SWITCH LOGIN"); |