From 14ef69c0f6309d64a358b25cf6395bc80a4c6ff5 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Mon, 26 Jun 2023 20:40:32 +1000 Subject: Move error screen over title --- source/client/StarClientApplication.cpp | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) (limited to 'source/client/StarClientApplication.cpp') 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; } -- cgit v1.2.3