#ifndef HOLESOME_INPUT_MAPPER_H #define HOLESOME_INPUT_MAPPER_H #include "../game.h" #include #include "../../config.h" #include "direction.h" #include "input_identity.h" #include "input_device_group.h" /** * Maps the inputs to actions. */ class InputMapper { public: InputMapper(); static std::shared_ptr getInstance(); void processEvents(); void updateIdentities(); std::shared_ptr getInputIdentity(InputDeviceGroup deviceGroup, unsigned int gamepadId = 0); std::set> getInputIdentities(); bool allowNewInputIdentities = true; public: std::set> newInputIdentities; std::set> deprecatedInputIdentities; private: static inline std::shared_ptr singletonInstance = nullptr; std::set> inputIdentities; void handleKeyPress(sf::Event::KeyEvent event); void handleKeyRelease(sf::Event::KeyEvent event); void handleJoystickMovement(sf::Event::JoystickMoveEvent event); void deactivateIdentity(const std::shared_ptr& identity); }; #endif //HOLESOME_INPUT_MAPPER_H