]> git.localhorst.tv Git - l2e.git/blobdiff - src/app/Application.cpp
break out of physics loop if a state change happened
[l2e.git] / src / app / Application.cpp
index 6e46203aa94184de00c55d90ff41025b7433d12d..4ff75d8ed10c1104f9abf38142b4ffe46c9d3a5a 100644 (file)
@@ -106,7 +106,10 @@ void Application::Quit() {
 
 void Application::PopAllStates() {
        while (!states.empty()) {
-               RealPopState();
+               states.top()->PauseState(*this, screen->Screen());
+               states.top()->ExitState(*this, screen->Screen());
+               delete states.top();
+               states.pop();
        }
 }
 
@@ -159,12 +162,12 @@ void Application::HandleEvents() {
                                break;
                }
        }
-       CurrentState()->HandleEvents(input);
+       if (CurrentState()) CurrentState()->HandleEvents(input);
 }
 
 void Application::UpdateWorld(Uint32 deltaT) {
        if (!CurrentState()) return;
-       for (Uint32 i(0); i < deltaT; ++i) {
+       for (Uint32 i(0); i < deltaT && !StateChangePending(); ++i) {
                CurrentState()->PhysicsTimers().Update(0.001f);
                CurrentState()->UpdateWorld(0.001f);
        }