Advertisement
Guest User

Untitled

a guest
Aug 13th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.97 KB | None | 0 0
  1. InputManager.h
  2.  
  3. #pragma once
  4. #include <vector>
  5. #include "Config.h"
  6. #include "GameplayScreen.h"
  7.  
  8. class InputManager
  9. {
  10. public:
  11.     InputManager();
  12.     ~InputManager();
  13.  
  14.     void Update(SDL_Event event);
  15.  
  16.     void MenuInput();
  17.     void PlayerInput();
  18.  
  19. private:
  20.     static GameplayScreen *GPS;
  21.     SDL_Event event;
  22.     static bool keyPressed, movePressed, keyW, keyS, keyShift;
  23.     static bool keyAPressed, keyDPressed;
  24.     bool key;
  25. };
  26.  
  27. ////////////////////////////////////////////////////////////////
  28. InputManager.cpp
  29.  
  30. #include "InputManager.h"
  31. #include "Core.h"
  32.  
  33. bool InputManager::keyPressed = false;
  34. bool InputManager::movePressed = false;
  35. bool InputManager::keyW = false;
  36. bool InputManager::keyS = false;
  37. bool InputManager::keyShift = false;
  38. bool InputManager::keyAPressed = false;
  39. bool InputManager::keyDPressed = false;
  40.  
  41. GameplayScreen *InputManager::GPS = new GameplayScreen();
  42.  
  43. InputManager::InputManager()
  44. {
  45.     this->movePressed = this->keyW = this->keyS = this->keyShift = this->keyAPressed = this->keyDPressed = this->keyPressed = false;
  46.     key = false;
  47. }
  48.  
  49. InputManager::~InputManager()
  50. {
  51.     this->keyPressed = false;
  52. }
  53.  
  54. void InputManager::Update(SDL_Event event)
  55. {
  56.     this->event = event;
  57. }
  58. void InputManager::MenuInput()
  59. {
  60.     if (event.type == SDL_KEYDOWN)
  61.     {
  62.         switch (event.key.keysym.sym)
  63.         {
  64.         case SDLK_s: case SDLK_DOWN:
  65.             if (!keyPressed)
  66.             {
  67.                 Config::getSM()->keyPressed(1);
  68.                 keyPressed = true;
  69.             }
  70.             break;
  71.         case SDLK_w: case SDLK_UP:
  72.             if (!keyPressed)
  73.             {
  74.                 Config::getSM()->keyPressed(0);
  75.                 keyPressed = true;
  76.             }
  77.             break;
  78.         case SDLK_KP_ENTER: case SDLK_RETURN:
  79.             if (!keyPressed)
  80.             {
  81.                 Config::getSM()->Enter();
  82.                 keyPressed = true;
  83.             }
  84.             break;
  85.         case SDLK_LEFT: case SDLK_a:
  86.             if (!keyPressed)
  87.             {
  88.                 Config::getSM()->keyPressed(2);
  89.                 keyPressed = true;
  90.             }
  91.             break;
  92.         case SDLK_RIGHT: case SDLK_d:
  93.             {
  94.                 if (!keyPressed)
  95.                 {
  96.                     Config::getSM()->keyPressed(3);
  97.                     keyPressed = true;
  98.                 }
  99.             }
  100.             break;
  101.         }
  102.     }
  103.  
  104.     if (event.type == SDL_KEYUP)
  105.     {
  106.         switch (event.key.keysym.sym)
  107.         {
  108.         case SDLK_s: case SDLK_DOWN: case SDLK_w: case SDLK_UP: case SDLK_KP_ENTER: case SDLK_RETURN: case SDLK_ESCAPE: case SDLK_a: case SDLK_RIGHT: case SDLK_LEFT: case SDLK_d:
  109.             keyPressed = false;
  110.             break;
  111.         default:
  112.             break;
  113.         }
  114.     }
  115. }
  116.  
  117. void InputManager::PlayerInput()
  118. {
  119.     if (event.type == SDL_WINDOWEVENT)
  120.     {
  121.         switch (event.window.event)
  122.         {
  123.         case SDL_WINDOWEVENT_FOCUS_LOST:
  124.             Config::getSM()->resetActiveTexture(Config::getSM()->gsMainMenu);
  125.             Config::getSM()->SetGameState(Config::getSM()->gsMainMenu);
  126.             break;
  127.         }
  128.     }
  129.  
  130.     if (event.type == SDL_KEYUP)
  131.     {
  132.         if (event.key.keysym.sym == Config::keyIDW)
  133.         {
  134.             keyW = false;
  135.         }
  136.  
  137.         if (event.key.keysym.sym == Config::keyIDA)
  138.         {
  139.             if (key)
  140.             {
  141.                 key = false;
  142.             }
  143.             keyAPressed = false;
  144.         }
  145.  
  146.         if (event.key.keysym.sym == Config::keyIDS)
  147.         {
  148.             keyS = false;
  149.         }
  150.  
  151.         if (event.key.keysym.sym == Config::keyIDD)
  152.         {
  153.             if (!key)
  154.             {
  155.                 key = true;
  156.             }
  157.             keyDPressed = false;
  158.         }
  159.  
  160.         if (event.key.keysym.sym == Config::keyIDLShift)
  161.         {
  162.             keyShift = false;
  163.         }
  164.  
  165.         if (event.key.keysym.sym == Config::keyIDSpace)
  166.         {
  167.             Config::keySpace = false;
  168.         }
  169.     }
  170.  
  171.     switch (event.key.keysym.sym)
  172.     {
  173.     case SDLK_KP_ENTER: case SDLK_RETURN: case SDLK_ESCAPE: keyPressed = false;  break;
  174.     }
  175.  
  176.     if (event.type == SDL_KEYDOWN)
  177.     {
  178.         if (event.key.keysym.sym == Config::keyIDW)
  179.         {
  180.             if (!keyW)
  181.                 keyW = true;
  182.         }
  183.  
  184.         if (event.key.keysym.sym == Config::keyIDA)
  185.         {
  186.             keyAPressed = true;
  187.             if (!keyDPressed)
  188.             {
  189.                 key = false;
  190.             }
  191.         }
  192.  
  193.         if (event.key.keysym.sym == Config::keyIDS)
  194.         {
  195.             if (!keyS)
  196.                 keyS = true;
  197.         }
  198.  
  199.         if (event.key.keysym.sym == Config::keyIDD)
  200.         {
  201.             keyDPressed = true;
  202.             if (!keyAPressed)
  203.             {
  204.                 key = true;
  205.             }
  206.         }
  207.  
  208.         if (event.key.keysym.sym == Config::keyIDLShift)
  209.         {
  210.             if (!keyShift)
  211.                 keyS = true;
  212.         }
  213.  
  214.         if (event.key.keysym.sym == Config::keyIDSpace)
  215.         {
  216.             if (!Config::keySpace)
  217.             {
  218.                 GPS->getPlayer()->Jump();
  219.                 Config::keyIDSpace = true;
  220.             }
  221.         }
  222.         if (keyAPressed)
  223.         {
  224.             if (!GPS->getPlayer()->getMove() && key == false && !GPS->getPlayer()->getChangeDirection())
  225.             {
  226.                 GPS->getPlayer()->StartMove();
  227.                 GPS->getPlayer()->setMoveDirection(false);
  228.             }
  229.             else if (!keyDPressed && GPS->getPlayer()->getMoveSpeed() > 0 && key != GPS->getPlayer()->getMoveDirection())
  230.             {
  231.                 GPS->getPlayer()->getChangeDirection();
  232.             }
  233.         }
  234.         if (keyDPressed)
  235.         {
  236.             if (!GPS->getPlayer()->getMove() && key == true && !GPS->getPlayer()->getChangeDirection())
  237.             {
  238.                 GPS->getPlayer()->StartMove();
  239.                 GPS->getPlayer()->setMoveDirection(true);
  240.             }
  241.             else if (!keyAPressed && GPS->getPlayer()->getMoveSpeed() > 0 && key != GPS->getPlayer()->getMoveDirection())
  242.             {
  243.                 GPS->getPlayer()->getChangeDirection();
  244.             }
  245.         }
  246.  
  247.         if (GPS->getPlayer()->getMove() && !keyAPressed && !keyDPressed)
  248.         {
  249.             GPS->getPlayer()->ResetMove();
  250.         }
  251.     }
  252. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement