Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/client/StarClientApplication.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-26 20:40:32 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-26 20:40:32 +1000
commit14ef69c0f6309d64a358b25cf6395bc80a4c6ff5 (patch)
tree9c62cf477889c226c748cbdd70330f8c1d6e08f8 /source/client/StarClientApplication.cpp
parent68d20787cf8540ebc22a45e6e82afbf8ad4dea15 (diff)
Move error screen over title
Diffstat (limited to 'source/client/StarClientApplication.cpp')
-rw-r--r--source/client/StarClientApplication.cpp33
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;
}