123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- #include "Input.h"
- // Constructeur et Destructeur
- Input::Input() : m_x(0), m_y(0), m_xRel(0), m_yRel(0), m_terminer(false)
- {
- // Initialisation du tableau m_touches[]
- for(int i(0); i < SDL_NUM_SCANCODES; i++)
- m_touches[i] = false;
- // Initialisation du tableau m_boutonsSouris[]
- for(int i(0); i < 8; i++)
- m_boutonsSouris[i] = false;
- }
- Input::~Input()
- {
- }
- // Méthodes
- void Input::updateEvenements()
- {
- // Pour éviter des mouvements fictifs de la souris, on réinitialise les coordonnées relatives
- m_xRel = 0;
- m_yRel = 0;
- // Boucle d'évènements
- while(SDL_PollEvent(&m_evenements))
- {
- // Switch sur le type d'évènement
- switch(m_evenements.type)
- {
- // Cas d'une touche enfoncée
- case SDL_KEYDOWN:
- m_touches[m_evenements.key.keysym.scancode] = true;
- break;
- // Cas d'une touche relâchée
- case SDL_KEYUP:
- m_touches[m_evenements.key.keysym.scancode] = false;
- break;
- // Cas de pression sur un bouton de la souris
- case SDL_MOUSEBUTTONDOWN:
- m_boutonsSouris[m_evenements.button.button] = true;
- break;
- // Cas du relâchement d'un bouton de la souris
- case SDL_MOUSEBUTTONUP:
- m_boutonsSouris[m_evenements.button.button] = false;
- break;
- // Cas d'un mouvement de souris
- case SDL_MOUSEMOTION:
- m_x = m_evenements.motion.x;
- m_y = m_evenements.motion.y;
- m_xRel = m_evenements.motion.xrel;
- m_yRel = m_evenements.motion.yrel;
- break;
- // Cas de la fermeture de la fenêtre
- case SDL_WINDOWEVENT:
- if(m_evenements.window.event == SDL_WINDOWEVENT_CLOSE)
- m_terminer = true;
- break;
- default:
- break;
- }
- }
- }
- bool Input::terminer() const
- {
- return m_terminer;
- }
- void Input::afficherPointeur(bool reponse) const
- {
- if(reponse)
- SDL_ShowCursor(SDL_ENABLE);
- else
- SDL_ShowCursor(SDL_DISABLE);
- }
- void Input::capturerPointeur(bool reponse) const
- {
- if(reponse)
- SDL_SetRelativeMouseMode(SDL_TRUE);
- else
- SDL_SetRelativeMouseMode(SDL_FALSE);
- }
- // Getters
- bool Input::getTouche(const SDL_Scancode touche) const
- {
- return m_touches[touche];
- }
- bool Input::getBoutonSouris(const Uint8 bouton) const
- {
- return m_boutonsSouris[bouton];
- }
- bool Input::mouvementSouris() const
- {
- if(m_xRel == 0 && m_yRel == 0)
- return false;
- else
- return true;
- }
- // Getters concernant la position du curseur
- int Input::getX() const
- {
- return m_x;
- }
- int Input::getY() const
- {
- return m_y;
- }
- int Input::getXRel() const
- {
- return m_xRel;
- }
- int Input::getYRel() const
- {
- return m_yRel;
- }
|