KeyboardFactory.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  2. * author: Patrick-Christopher Mattulat
  3. * e-mail: webmaster@lynarstudios.com
  4. */
  5. #include <factory/KeyboardFactory.hpp>
  6. #include <input/SdlKeyboard.hpp>
  7. #include <ls-std/core/exception/IllegalArgumentException.hpp>
  8. using ls::atlantis::factory::KeyboardFactory;
  9. using ls::atlantis::glossary::KeyboardKeys;
  10. using ls::atlantis::glossary::WindowApiTypes;
  11. using ls::atlantis::input::KeyStatus;
  12. using ls::atlantis::input::KeyboardKeyMap;
  13. using ls::atlantis::input::SdlKeyboard;
  14. using ls::atlantis::interfaces::IKeyboard;
  15. using ls::std::core::IllegalArgumentException;
  16. using ::std::make_shared;
  17. using ::std::shared_ptr;
  18. KeyboardFactory::KeyboardFactory() = default;
  19. KeyboardFactory::~KeyboardFactory() = default;
  20. shared_ptr<IKeyboard> KeyboardFactory::build(const WindowApiTypes &_windowApi)
  21. {
  22. shared_ptr<IKeyboard> keyboard{};
  23. switch (_windowApi)
  24. {
  25. case WindowApiTypes::NONE_SELECTED:
  26. {
  27. throw IllegalArgumentException{};
  28. }
  29. case WindowApiTypes::SDL_WINDOW_API:
  30. {
  31. keyboard = make_shared<SdlKeyboard>(KeyboardFactory::_generateKeyMap());
  32. } break;
  33. }
  34. return keyboard;
  35. }
  36. KeyboardKeyMap KeyboardFactory::_generateKeyMap()
  37. {
  38. KeyboardKeyMap keyMap{};
  39. keyMap[KeyboardKeys::ESCAPE] = KeyStatus(KeyboardKeys::ESCAPE, false, false);
  40. return keyMap;
  41. }