#ifndef BUTTONS_H #define BUTTONS_H #include #include #include "input/Button.h" #include "utils/Array.h" #include "utils/ArrayList.h" #include "utils/HashMap.h" class Buttons final { friend class Window; HashMap buttons; HashMap mouseButtons; double lastMouseX; double lastMouseY; double mouseX; double mouseY; int activeController; struct Axis { float less; float greater; Button* lessButton; Button* greaterButton; Axis(); }; Array gamepadAxisToButton; Array gamepadToButton; public: Buttons(); void add(Button& button); void addMouse(Button& button); void mapGamepadButton(Button& button, int mapping); void mapGamepadAxis(Button& button, float value, int index); void tick(); double getLastMouseX() const; double getLastMouseY() const; double getMouseX() const; double getMouseY() const; private: void onButton(HashMap& map, int key, int action); void onKey(int key, int scancode, int action, int mods); void onMouse(int button, int action, int mods); void onMouseMove(double x, double y); bool searchForGamepad(); void checkGamepad(); }; #endif