/* * KeyboardController.h * * Created on: Mar 1, 2020 * Author: ayoungblood */ #ifndef SRC_ECS_KEYBOARDCONTROLLER_H_ #define SRC_ECS_KEYBOARDCONTROLLER_H_ #include "../game/Game.hpp" #include "ECS.h" #include "Components.h" #include "../assetmgr/AssetManager.h" class KeyboardController : public Component { public: TransformComponent *transform; SpriteComponent *sprite; Game *game; void init() override { transform = &entity->getComponent(); sprite = &entity->getComponent(); } void update() override { if (Game::event.type == SDL_KEYDOWN) { switch (Game::event.key.keysym.sym) { case SDLK_UP: break; case SDLK_DOWN: break; case SDLK_LEFT: if(Game::gsm->currentState == GameStateManager::ST_COREGAME){ transform->velocity.x = -1; if(Game::playerIsGrounded){ sprite->Play("Walk"); } sprite->spriteFlip = SDL_FLIP_NONE; } break; case SDLK_RIGHT: if(Game::gsm->currentState == GameStateManager::ST_COREGAME){ transform->velocity.x = 1; if(Game::playerIsGrounded){ sprite->Play("Walk"); } sprite->spriteFlip = SDL_FLIP_HORIZONTAL; } break; case SDLK_k: if (!Game::debugCollisionBoxes) { Game::debugCollisionBoxes = true; } else {Game::debugCollisionBoxes = false; } break; case SDLK_j: if(Game::gsm->currentState == GameStateManager::ST_COREGAME){ if (Mix_PlayChannel(-1, Game::assets->GetSoundClip("bwoop"),0) == 0) { Mix_PlayChannel(-1, Game::assets->GetSoundClip("bwoop"),0); } Game::gravityOnPlayer = true; sprite->Play("Jump"); transform->velocity.y = -2; } break; case SDLK_u: Game::gsm->AdvanceState(); break; case SDLK_i: Game::gsm->GameOver(); break; default: break; } } // =============================================== // ON KEY UP // =============================================== else if (Game::event.type == SDL_KEYUP) { switch (Game::event.key.keysym.sym) { case SDLK_LEFT: if(Game::gsm->currentState == GameStateManager::ST_COREGAME){ transform->velocity.x = 0; sprite->Play("Idle"); if (!Game::gravityOnPlayer){ Game::gravityOnPlayer = true; // sprite->Play("Fall"); } } break; case SDLK_RIGHT: if(Game::gsm->currentState == GameStateManager::ST_COREGAME){ transform->velocity.x = 0; sprite->Play("Idle"); if (!Game::gravityOnPlayer){ Game::gravityOnPlayer = true; } } break; case SDLK_k: break; case SDLK_j: if(Game::gsm->currentState == GameStateManager::ST_COREGAME){ transform->velocity.y = 0; sprite->Play("Fall"); Game::gravityOnPlayer = true; } break; case SDLK_u: break; case SDLK_i: break; case SDLK_d: if (Game::debugMenu == false){ Game::debugMenu = true;} else { Game::debugMenu = false; } break; case SDLK_ESCAPE: // exit the game when Escape pressed Game::isRunning = false; break; default: break; } } } }; #endif /* SRC_ECS_KEYBOARDCONTROLLER_H_ */