diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-26 20:40:32 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-26 20:40:32 +1000 |
commit | 14ef69c0f6309d64a358b25cf6395bc80a4c6ff5 (patch) | |
tree | 9c62cf477889c226c748cbdd70330f8c1d6e08f8 /source/client/StarClientApplication.cpp | |
parent | 68d20787cf8540ebc22a45e6e82afbf8ad4dea15 (diff) |
Move error screen over title
Diffstat (limited to 'source/client/StarClientApplication.cpp')
-rw-r--r-- | source/client/StarClientApplication.cpp | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/source/client/StarClientApplication.cpp b/source/client/StarClientApplication.cpp index 542e41b..907f357 100644 --- a/source/client/StarClientApplication.cpp +++ b/source/client/StarClientApplication.cpp @@ -274,12 +274,12 @@ void ClientApplication::processInput(InputEvent const& event) { }); } + if (!m_errorScreen->accepted() && m_errorScreen->handleInputEvent(event)) + return; + if (m_state == MainAppState::Splash) { m_cinematicOverlay->handleInputEvent(event); - } else if (m_state == MainAppState::ModsWarning || m_state == MainAppState::Error) { - m_errorScreen->handleInputEvent(event); - } else if (m_state == MainAppState::Title) { if (!m_cinematicOverlay->handleInputEvent(event)) m_titleScreen->handleInputEvent(event); @@ -305,10 +305,14 @@ void ClientApplication::update() { } } + if (!m_errorScreen->accepted()) + m_errorScreen->update(); + if (m_state == MainAppState::Mods) updateMods(); else if (m_state == MainAppState::ModsWarning) updateModsWarning(); + if (m_state == MainAppState::Splash) updateSplash(); else if (m_state == MainAppState::Error) @@ -351,9 +355,10 @@ void ClientApplication::render() { m_mainInterface->render(); m_cinematicOverlay->render(); - } else if (m_state == MainAppState::ModsWarning || m_state == MainAppState::Error) { - m_errorScreen->render(); } + + if (!m_errorScreen->accepted()) + m_errorScreen->render(m_state == MainAppState::ModsWarning || m_state == MainAppState::Error); } void ClientApplication::getAudioData(int16_t* sampleData, size_t frameCount) { @@ -395,9 +400,11 @@ void ClientApplication::changeState(MainAppState newState) { } } - if (oldState > MainAppState::Title && m_state == MainAppState::Title) + if (oldState > MainAppState::Title && m_state == MainAppState::Title) { m_titleScreen->resetState(); - + m_mainMixer->setUniverseClient({}); + m_mainMixer->setWorldPainter({}); + } if (oldState >= MainAppState::Title && m_state < MainAppState::Title) { m_playerStorage.reset(); @@ -547,13 +554,12 @@ void ClientApplication::changeState(MainAppState newState) { void ClientApplication::setError(String const& error) { Logger::error(error.utf8Ptr()); m_errorScreen->setMessage(error); - changeState(MainAppState::Error); + changeState(MainAppState::Title); } void ClientApplication::setError(String const& error, std::exception const& e) { Logger::error("%s\n%s", error, outputException(e, true)); m_errorScreen->setMessage(strf("%s\n%s", error, outputException(e, false))); - changeState(MainAppState::Error); } void ClientApplication::updateMods() { @@ -596,8 +602,6 @@ void ClientApplication::updateMods() { } void ClientApplication::updateModsWarning() { - m_errorScreen->update(); - if (m_errorScreen->accepted()) changeState(MainAppState::Splash); } @@ -609,8 +613,6 @@ void ClientApplication::updateSplash() { } void ClientApplication::updateError() { - m_errorScreen->update(); - if (m_errorScreen->accepted()) changeState(MainAppState::Title); } @@ -761,9 +763,8 @@ void ClientApplication::updateRunning() { errMessage = strf("You were disconnected from the server for the following reason:\n%s", *disconnectReason); else errMessage = "Client-server connection no longer valid!"; - Logger::error(errMessage.utf8Ptr()); - m_errorScreen->setMessage(errMessage); - changeState(MainAppState::Error); + setError(errMessage); + changeState(MainAppState::Title); return true; } |