#ifndef CONTROLLER_H
#define CONTROLLER_H

#include <GL/glew.h>
#include <GLFW/glfw3.h>

#include "utils/Array.h"
#include "input/Button.h"

class Controller final {
    int index;
    Array<Button, 2 + GLFW_JOYSTICK_LAST> buttons;

public:
    Controller();

    void tick();

    bool isDown(int button) const;
    int getDownTime(int button) const;
    bool isUp(int button) const;
    int getUpTime(int button) const;

private:
    int getRangeMask(int button) const;

    /*bool findController();
    void reset();
    void increment(uint button, const u8* mapping, uint index);
    void increment(uint button, bool notReleased);

    uint activeController;*/
};

#endif