// Copyright (c) 2008-2023 the Urho3D project // License: MIT #include "AppStateManager.h" #include "AppState_Benchmark01.h" #include "AppState_Benchmark02.h" #include "AppState_Benchmark03.h" #include "AppState_Benchmark04.h" #include "AppState_MainScreen.h" #include "AppState_ResultScreen.h" #include using namespace Urho3D; AppStateManager::AppStateManager(Context* context) : Object(context) { appStates_.Insert({APPSTATEID_MAINSCREEN, MakeShared(context_)}); appStates_.Insert({APPSTATEID_RESULTSCREEN, MakeShared(context_)}); appStates_.Insert({APPSTATEID_BENCHMARK01, MakeShared(context_)}); appStates_.Insert({APPSTATEID_BENCHMARK02, MakeShared(context_)}); appStates_.Insert({APPSTATEID_BENCHMARK03, MakeShared(context_)}); appStates_.Insert({APPSTATEID_BENCHMARK04, MakeShared(context_)}); } void AppStateManager::Apply() { if (requiredAppStateId_ == currentAppStateId_) return; assert(requiredAppStateId_ != APPSTATEID_NULL); if (currentAppStateId_ != APPSTATEID_NULL) { SharedPtr currentAppStatePtr = appStates_[currentAppStateId_]; currentAppStatePtr->OnLeave(); } previousAppStateId_ = currentAppStateId_; currentAppStateId_ = requiredAppStateId_; SharedPtr requiredAppStatePtr = appStates_[requiredAppStateId_]; requiredAppStatePtr->OnEnter(); }