Advertisement
Al99

InputHandler.cpp

Nov 11th, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.98 KB | None | 0 0
  1. #include "InputHandler.h"
  2.  
  3. InputHandler* InputHandler::s_pInstance= 0;
  4.  
  5. void InputHandler::initialiseJoysticks()
  6. {
  7.     if(SDL_WasInit(SDL_INIT_JOYSTICK) == 0)
  8.     {
  9.         SDL_InitSubSystem(SDL_INIT_JOYSTICK);
  10.     }
  11.    
  12.         if(SDL_NumJoysticks() > 0)
  13.         {
  14.             for(int i = 0; i < SDL_NumJoysticks(); i++)
  15.             {
  16.             SDL_Joystick* joy = SDL_JoystickOpen(i);
  17.                 if(SDL_JoystickOpen(i) == 1)
  18.                 {
  19.                     m_joysticks.push_back(joy);
  20.                 }
  21.                 else
  22.                 {
  23.                     std::cout << SDL_GetError();
  24.                 }
  25.             }
  26.        
  27.        
  28.         SDL_JoystickEventState(SDL_ENABLE);
  29.         m_bjoysticksInitialised = true;
  30.        
  31.         std::cout<< "Initialised " << m_joysticks.size() <<
  32.         "joystick(s)";
  33.         }
  34.             else
  35.             {
  36.                 m_bjoysticksInitialised = false;
  37.             }
  38. }
  39.  
  40.  
  41. void InputHandler::clean()
  42. {
  43.     if(m_bjoysticksInitialised)
  44.     {
  45.         for(unsigned int i = 0; i < SDL_NumJoysticks(); i++)
  46.         {
  47.             SDL_JoystickClose(m_joysticks[i]);
  48.         }
  49.     }
  50. }
  51.  
  52. void InputHandler::update()
  53. {
  54.     SDL_Event event;
  55.     while(SDL_PollEvent(&event))
  56.     {
  57.         if(event.type == SDL_QUIT)
  58.         {
  59.             TheGame::Instance()->quit();
  60.         }
  61.     if(event.type == SDL_JOYAXISMOTION)
  62.     {
  63.         int whichOne = event.jaxis.which;
  64.         //left stick move left or right
  65.         if(event.jaxis.axis == 0)
  66.         {
  67.             if(event.jaxis.value > m_joystickDeadZone)
  68.             {
  69.                 m_joystickValues[whichOne].first->setX(1);
  70.             }
  71.         else if(event.jaxis.value < -m_joystickDeadZone)
  72.         {
  73.             m_joystickValues[whichOne].first->setX(-1);
  74.         }
  75.         else
  76.         {
  77.             m_joystickValues[whichOne].first->setX(0);
  78.         }
  79.        
  80. }
  81.  
  82. // left stick move up or down
  83. if(event.jaxis == 1)
  84. {
  85.     if(event.jaxis.value > m_joystickDeadzone)
  86.     {
  87.         m_joystickValues[whichOne].first.setY(1);
  88.     }
  89.     else if(event.jaxis.value < -m_joystickDeadZone)
  90.     {
  91.         m_joystickValues[whichOne].first->setY(-1);
  92.     }
  93.     else
  94.     {
  95.         m_joystickValues[whichOne].first->setY(-1);
  96.     }
  97. }
  98.  
  99. //right stick move left or right
  100. if(event.jaxis.axis == 3)
  101. {
  102.     if(event.jaxis.value > m_joystickDeadZone)
  103.     {
  104.         m_joystickValues[whichOne].second->setX(1);
  105.     }
  106.     else if(event.jaxis.value < -m_joystickDeadZone)
  107.     {
  108.         m_joystickValues[whichOne].second->setX(-1);
  109.     }
  110.     else
  111.     {
  112.         m_joystickValues[whichOne].second->setX(0);
  113.     }
  114. }
  115.  
  116. //right stick move up or down
  117. if(event.jaxis.axis == 4)
  118. {
  119.     if(event.jaxis.value > m_joystickDeadZone)
  120.     {
  121.         m_joystickValues[whichOne].second->setY(1);
  122.     }
  123.     else if(event.jaxis.value < -m_joystickDeadZone)
  124.     {
  125.         m_joystickValues[whichOne].second->setY(-1);
  126.     }
  127.     else
  128.     {
  129.         m_joystickValues[whichOne].second->setY(0);
  130.     }
  131. }
  132. }
  133. }
  134. }  
  135.  
  136. int InputHandler::xvalue(int joy, int stick)
  137. {
  138.     if(m_joystickValues.size() > 0)
  139.     {
  140.         if(stick == 1)
  141.         {
  142.             return m_joystickValues[joy].first->getX();
  143.         }
  144.         else if(stick == 2)
  145.             {
  146.                 return m_joystickValues[joy].second->getX();
  147.             }
  148.     }
  149.     return 0;
  150. }
  151.  
  152. int InputHandler::yvalue(int joy, int stick)
  153. {
  154.     if(m_joystickValues.size() > 0)
  155.     {
  156.         if(stick == 1)
  157.         {
  158.             return m_joystickValues[joy].first->getX();
  159.         }
  160.         else if(stick == 2)
  161.         {
  162.             return m_joystickValues[joy].second->getY();
  163.         }
  164.     }
  165.     return 0;
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement