Engine.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * author: Patrick-Christopher Mattulat
  3. * e-mail: webmaster@lynarstudios.com
  4. */
  5. #include <cycle/Engine.hpp>
  6. #include <factory/KeyboardFactory.hpp>
  7. #include <factory/WindowApiFactory.hpp>
  8. #include <messaging/StatusCodeOk.hpp>
  9. using ls::atlantis::cycle::Engine;
  10. using ls::atlantis::cycle::EngineParameter;
  11. using ls::atlantis::cycle::EngineRuntimeData;
  12. using ls::atlantis::factory::KeyboardFactory;
  13. using ls::atlantis::factory::WindowApiFactory;
  14. using ls::atlantis::interfaces::AStatusCode;
  15. using ls::atlantis::messaging::StatusCodeOk;
  16. using ::std::make_shared;
  17. using ::std::shared_ptr;
  18. Engine::Engine(const EngineParameter &_parameter)
  19. : data(make_shared<EngineRuntimeData>()),
  20. parameter(_parameter)
  21. {}
  22. Engine::~Engine() = default;
  23. shared_ptr<EngineRuntimeData> Engine::getData() const
  24. {
  25. return this->data;
  26. }
  27. shared_ptr<AStatusCode> Engine::init() const
  28. {
  29. shared_ptr<AStatusCode> result = _initWindowApi();
  30. if (result->getCode() == StatusCodeOk().getCode())
  31. {
  32. result = this->_initKeyboard();
  33. }
  34. return result;
  35. }
  36. shared_ptr<AStatusCode> Engine::_initKeyboard() const
  37. {
  38. const auto keyboard = KeyboardFactory::build(this->parameter.getWindowApiType());
  39. this->data->setKeyboard(keyboard);
  40. return make_shared<StatusCodeOk>();
  41. }
  42. shared_ptr<AStatusCode> Engine::_initWindowApi() const
  43. {
  44. const auto windowApi = WindowApiFactory::build(this->parameter.getWindowApiType());
  45. this->data->setWindowApi(windowApi);
  46. return windowApi->init();
  47. }