#ifndef INPUT_HPP #define INPUT_HPP #include #include #include // Structs struct Vector2 { int x; int y; Vector2(int x = 0, int y = 0) : x(x), y(y) {} }; // Classes class Input { public: Input(); ~Input(); void handleEvents(); bool quitRequested() const; bool isKeyPressed(SDL_Scancode key); bool isKeyPressed(std::vector keys); bool hasKeyBeenPressed(SDL_Scancode key); bool hasKeyBeenPressed(std::vector keys); bool isMouseButtonPressed(Uint8 button); bool isMouseButtonPressed(std::vector buttons); bool hasMouseButtonBeenPressed(Uint8 button); bool hasMouseButtonBeenPressed(std::vector buttons); Vector2 getMousePosition() const; private: SDL_Event event; std::unordered_map keyStates; std::unordered_map keyFallingEdgeStates; std::unordered_map mouseButtonStates; std::unordered_map mouseButtonFallingEdgeStates; Vector2 mousePosition; bool quitRequestedFlag = false; }; #endif