AppStateManager.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Copyright (c) 2008-2022 the Urho3D project
  2. // License: MIT
  3. #include "AppStateManager.h"
  4. #include "AppState_Benchmark01.h"
  5. #include "AppState_Benchmark02.h"
  6. #include "AppState_Benchmark03.h"
  7. #include "AppState_MainScreen.h"
  8. #include "AppState_ResultScreen.h"
  9. #include <Urho3D/DebugNew.h>
  10. using namespace Urho3D;
  11. AppStateManager::AppStateManager(Context* context)
  12. : Object(context)
  13. {
  14. appStates_.Insert({APPSTATEID_MAINSCREEN, MakeShared<AppState_MainScreen>(context_)});
  15. appStates_.Insert({APPSTATEID_RESULTSCREEN, MakeShared<AppState_ResultScreen>(context_)});
  16. appStates_.Insert({APPSTATEID_BENCHMARK01, MakeShared<AppState_Benchmark01>(context_)});
  17. appStates_.Insert({APPSTATEID_BENCHMARK02, MakeShared<AppState_Benchmark02>(context_)});
  18. appStates_.Insert({APPSTATEID_BENCHMARK03, MakeShared<AppState_Benchmark03>(context_)});
  19. }
  20. void AppStateManager::Apply()
  21. {
  22. if (requiredAppStateId_ == currentAppStateId_)
  23. return;
  24. assert(requiredAppStateId_ != APPSTATEID_NULL);
  25. if (currentAppStateId_ != APPSTATEID_NULL)
  26. {
  27. SharedPtr<AppState_Base> currentAppStatePtr = appStates_[currentAppStateId_];
  28. currentAppStatePtr->OnLeave();
  29. }
  30. previousAppStateId_ = currentAppStateId_;
  31. currentAppStateId_ = requiredAppStateId_;
  32. SharedPtr<AppState_Base> requiredAppStatePtr = appStates_[requiredAppStateId_];
  33. requiredAppStatePtr->OnEnter();
  34. }