summaryrefslogtreecommitdiff
path: root/src/progs/manaverse
diff options
context:
space:
mode:
Diffstat (limited to 'src/progs/manaverse')
-rw-r--r--src/progs/manaverse/client.cpp28
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");