#ifndef DEF_INPUT
#define DEF_INPUT

///Jovian
///Adaptation pour InputAndJoy

// Include
#include <SDL2/SDL.h>


// Classe
class Input
{
    public:

    Input();
    ~Input();

    virtual void updateEvenements();
    bool terminer() const;
    void afficherPointeur(bool reponse) const;
    void capturerPointeur(bool reponse);

    bool getTouche(const SDL_Scancode touche) const;
    bool getBoutonSouris(const Uint8 bouton) const;
    bool mouvementSouris() const;

    int getX() const;
    int getY() const;

    int getXRel() const;
    int getYRel() const;

    void setWindow(SDL_Window* activWindow);
    void setMoveKeys(SDL_Scancode avancer, SDL_Scancode reculer, SDL_Scancode droite, SDL_Scancode gauche);

    virtual float getMainXRel() const;
    virtual float getMainYRel() const;
    virtual float getMainXMove() const;
    virtual float getMainYMove() const;


    protected:

    SDL_Event m_evenements;
    bool m_touches[SDL_NUM_SCANCODES];
    bool m_boutonsSouris[8];

    int m_x;
    int m_y;
    int m_xRel;
    int m_yRel;

    SDL_Scancode m_avancer;
    SDL_Scancode m_reculer;
    SDL_Scancode m_droite;
    SDL_Scancode m_gauche;

    bool m_terminer;
    bool m_relativeMouse;

    SDL_Window* m_window;
    int m_windowHalfHeight;
    int m_windowHalfWidth;
};

#endif