diff options
Diffstat (limited to 'src/progs/manaverse/client.cpp')
-rw-r--r-- | src/progs/manaverse/client.cpp | 47 |
1 files changed, 38 insertions, 9 deletions
diff --git a/src/progs/manaverse/client.cpp b/src/progs/manaverse/client.cpp index ece3c9d8d..980ffdc91 100644 --- a/src/progs/manaverse/client.cpp +++ b/src/progs/manaverse/client.cpp @@ -128,6 +128,7 @@ #ifdef ANDROID #include "fs/paths.h" #endif // ANDROID +#include "utils/performance.h" #include "utils/perfstat.h" #include "utils/sdlcheckutils.h" #include "utils/sdlhelper.h" @@ -145,14 +146,14 @@ #include "configuration.h" #endif // USE_OPENGL -#ifdef WIN32 +#ifdef _WIN32 PRAGMA48(GCC diagnostic push) PRAGMA48(GCC diagnostic ignored "-Wshadow") #include <SDL_syswm.h> PRAGMA48(GCC diagnostic pop) #include "fs/specialfolder.h" #undef ERROR -#endif // WIN32 +#endif // _WIN32 #ifdef ANDROID #ifndef USE_SDL2 @@ -392,9 +393,9 @@ void Client::gameInit() eventsManager.init(); eventsManager.enableEvents(); -#ifdef WIN32 +#ifdef _WIN32 Dirs::mountDataDir(); -#endif // WIN32 +#endif // _WIN32 #ifndef USE_SDL2 WindowManager::setIcon(); #endif // USE_SDL2 @@ -424,10 +425,10 @@ void Client::gameInit() touchManager.init(); -#ifndef WIN32 +#ifndef _WIN32 Dirs::extractDataDir(); Dirs::mountDataDir(); -#endif // WIN32 +#endif // _WIN32 Dirs::updateDataPath(); @@ -754,7 +755,7 @@ void Client::gameClear() logger->log1("Quitting11"); #ifdef USE_PROFILER - Perfomance::clear(); + Performance::clear(); #endif // USE_PROFILER #ifdef DEBUG_OPENGL_LEAKS @@ -1579,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"); @@ -1880,7 +1909,7 @@ void Client::moveButtons(const int width) { int x = width - mSetupButton->getWidth() - mButtonPadding; mSetupButton->setPosition(x, mButtonPadding); -#ifndef WIN32 +#ifndef _WIN32 x -= mPerfomanceButton->getWidth() + mButtonSpacing; mPerfomanceButton->setPosition(x, mButtonPadding); @@ -1899,7 +1928,7 @@ void Client::moveButtons(const int width) x -= mCloseButton->getWidth() + mButtonSpacing; mCloseButton->setPosition(x, mButtonPadding); #endif // ANDROID -#endif // WIN32 +#endif // _WIN32 } } |