Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- InputManager.h
- #pragma once
- #include <vector>
- #include "Config.h"
- #include "GameplayScreen.h"
- class InputManager
- {
- public:
- InputManager();
- ~InputManager();
- void Update(SDL_Event event);
- void MenuInput();
- void PlayerInput();
- private:
- static GameplayScreen *GPS;
- SDL_Event event;
- static bool keyPressed, movePressed, keyW, keyS, keyShift;
- static bool keyAPressed, keyDPressed;
- bool key;
- };
- ////////////////////////////////////////////////////////////////
- InputManager.cpp
- #include "InputManager.h"
- #include "Core.h"
- bool InputManager::keyPressed = false;
- bool InputManager::movePressed = false;
- bool InputManager::keyW = false;
- bool InputManager::keyS = false;
- bool InputManager::keyShift = false;
- bool InputManager::keyAPressed = false;
- bool InputManager::keyDPressed = false;
- GameplayScreen *InputManager::GPS = new GameplayScreen();
- InputManager::InputManager()
- {
- this->movePressed = this->keyW = this->keyS = this->keyShift = this->keyAPressed = this->keyDPressed = this->keyPressed = false;
- key = false;
- }
- InputManager::~InputManager()
- {
- this->keyPressed = false;
- }
- void InputManager::Update(SDL_Event event)
- {
- this->event = event;
- }
- void InputManager::MenuInput()
- {
- if (event.type == SDL_KEYDOWN)
- {
- switch (event.key.keysym.sym)
- {
- case SDLK_s: case SDLK_DOWN:
- if (!keyPressed)
- {
- Config::getSM()->keyPressed(1);
- keyPressed = true;
- }
- break;
- case SDLK_w: case SDLK_UP:
- if (!keyPressed)
- {
- Config::getSM()->keyPressed(0);
- keyPressed = true;
- }
- break;
- case SDLK_KP_ENTER: case SDLK_RETURN:
- if (!keyPressed)
- {
- Config::getSM()->Enter();
- keyPressed = true;
- }
- break;
- case SDLK_LEFT: case SDLK_a:
- if (!keyPressed)
- {
- Config::getSM()->keyPressed(2);
- keyPressed = true;
- }
- break;
- case SDLK_RIGHT: case SDLK_d:
- {
- if (!keyPressed)
- {
- Config::getSM()->keyPressed(3);
- keyPressed = true;
- }
- }
- break;
- }
- }
- if (event.type == SDL_KEYUP)
- {
- switch (event.key.keysym.sym)
- {
- 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:
- keyPressed = false;
- break;
- default:
- break;
- }
- }
- }
- void InputManager::PlayerInput()
- {
- if (event.type == SDL_WINDOWEVENT)
- {
- switch (event.window.event)
- {
- case SDL_WINDOWEVENT_FOCUS_LOST:
- Config::getSM()->resetActiveTexture(Config::getSM()->gsMainMenu);
- Config::getSM()->SetGameState(Config::getSM()->gsMainMenu);
- break;
- }
- }
- if (event.type == SDL_KEYUP)
- {
- if (event.key.keysym.sym == Config::keyIDW)
- {
- keyW = false;
- }
- if (event.key.keysym.sym == Config::keyIDA)
- {
- if (key)
- {
- key = false;
- }
- keyAPressed = false;
- }
- if (event.key.keysym.sym == Config::keyIDS)
- {
- keyS = false;
- }
- if (event.key.keysym.sym == Config::keyIDD)
- {
- if (!key)
- {
- key = true;
- }
- keyDPressed = false;
- }
- if (event.key.keysym.sym == Config::keyIDLShift)
- {
- keyShift = false;
- }
- if (event.key.keysym.sym == Config::keyIDSpace)
- {
- Config::keySpace = false;
- }
- }
- switch (event.key.keysym.sym)
- {
- case SDLK_KP_ENTER: case SDLK_RETURN: case SDLK_ESCAPE: keyPressed = false; break;
- }
- if (event.type == SDL_KEYDOWN)
- {
- if (event.key.keysym.sym == Config::keyIDW)
- {
- if (!keyW)
- keyW = true;
- }
- if (event.key.keysym.sym == Config::keyIDA)
- {
- keyAPressed = true;
- if (!keyDPressed)
- {
- key = false;
- }
- }
- if (event.key.keysym.sym == Config::keyIDS)
- {
- if (!keyS)
- keyS = true;
- }
- if (event.key.keysym.sym == Config::keyIDD)
- {
- keyDPressed = true;
- if (!keyAPressed)
- {
- key = true;
- }
- }
- if (event.key.keysym.sym == Config::keyIDLShift)
- {
- if (!keyShift)
- keyS = true;
- }
- if (event.key.keysym.sym == Config::keyIDSpace)
- {
- if (!Config::keySpace)
- {
- GPS->getPlayer()->Jump();
- Config::keyIDSpace = true;
- }
- }
- if (keyAPressed)
- {
- if (!GPS->getPlayer()->getMove() && key == false && !GPS->getPlayer()->getChangeDirection())
- {
- GPS->getPlayer()->StartMove();
- GPS->getPlayer()->setMoveDirection(false);
- }
- else if (!keyDPressed && GPS->getPlayer()->getMoveSpeed() > 0 && key != GPS->getPlayer()->getMoveDirection())
- {
- GPS->getPlayer()->getChangeDirection();
- }
- }
- if (keyDPressed)
- {
- if (!GPS->getPlayer()->getMove() && key == true && !GPS->getPlayer()->getChangeDirection())
- {
- GPS->getPlayer()->StartMove();
- GPS->getPlayer()->setMoveDirection(true);
- }
- else if (!keyAPressed && GPS->getPlayer()->getMoveSpeed() > 0 && key != GPS->getPlayer()->getMoveDirection())
- {
- GPS->getPlayer()->getChangeDirection();
- }
- }
- if (GPS->getPlayer()->getMove() && !keyAPressed && !keyDPressed)
- {
- GPS->getPlayer()->ResetMove();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement