+State *Application::CurrentState() {
+ return states.empty() ? 0 : states.top();
+}
+
+void Application::UpdateState() {
+ while (!stateChanges.empty()) {
+ switch (stateChanges.front().type) {
+ case StateCommand::PUSH:
+ RealPushState(stateChanges.front().state);
+ break;
+ case StateCommand::POP:
+ RealPopState();
+ break;
+ case StateCommand::CHANGE:
+ RealChangeState(stateChanges.front().state);
+ break;
+ }
+ stateChanges.pop();
+ }