#ifndef CONTROLLER_H #define CONTROLLER_H #include "utils/Array.h" enum Button { A, B, X, Y, L, R, SELECT, START, LEFT, RIGHT, UP, DOWN }; struct Controller final { Controller(); void tick(); uint getButtonAmount() const; const char* getName(uint button) const; uint getDownTime(uint button) const; bool isDown(uint button) const; bool wasReleased(uint button) const; private: bool findController(); void reset(); void increment(uint button, const u8* mapping, uint index); void increment(uint button, bool notReleased); struct ButtonState final { ButtonState(); uint downTime; bool justReleased; }; Array buttons; uint activeController; }; #endif /*#ifndef KEYS_H #define KEYS_H #include #include #include "common/utils/Types.h" class Keys final { public: class Key final { public: friend class Keys; bool isDown() const; bool isReleased() const; u32 getDownTime() const; private: Key(); Key(const Key&) = delete; Key(Key&&) = delete; Key& operator=(const Key&) = delete; Key& operator=(Key&&) = delete; int glfwKey; bool down; bool shouldRelease; u32 downTime; }; private: Key keys[15]; public: Keys(); const Key& left; const Key& right; const Key& up; const Key& down; const Key& jump; const Key& sneak; const Key& camLeft; const Key& camRight; const Key& camUp; const Key& camDown; const Key& test; const Key& test2; const Key& test3; const Key& test4; const Key& test5; void release(int key); void press(int key); void tick(); private: Keys(const Keys&) = delete; Keys& operator=(const Keys&) = delete; Keys(Key&&) = delete; Keys& operator=(Keys&&) = delete; }; std::ostream& operator<<(std::ostream& os, const Keys::Key& k); #endif*/