Fixed input bug (see SDL2 Engine Deck)

This commit is contained in:
Alan Youngblood 2021-02-18 14:20:11 -05:00
parent e4de32f9f7
commit fe13bac080
3 changed files with 31 additions and 48 deletions

Binary file not shown.

View File

@ -16,7 +16,8 @@
class KeyboardController : public Component class KeyboardController : public Component
{ {
public: public:
TransformComponent *transform; // bool keyIsAlreadyPressed[];
TransformComponent *transform;
SpriteComponent *sprite; SpriteComponent *sprite;
Game *game; Game *game;
@ -52,7 +53,10 @@ public:
sprite->spriteFlip = SDL_FLIP_HORIZONTAL; sprite->spriteFlip = SDL_FLIP_HORIZONTAL;
break; break;
case SDLK_k: case SDLK_k:
// game->printDebug(""); if (!Game::debugCollisionBoxes)
{ Game::debugCollisionBoxes = true; }
else
{Game::debugCollisionBoxes = false; }
break; break;
case SDLK_j: case SDLK_j:
if (Mix_PlayChannel(-1, Game::assets->GetSoundClip("bwoop"),0) == 0) if (Mix_PlayChannel(-1, Game::assets->GetSoundClip("bwoop"),0) == 0)
@ -63,12 +67,17 @@ public:
sprite->Play("Jump"); sprite->Play("Jump");
transform->velocity.y = -2; transform->velocity.y = -2;
break; break;
case SDLK_u:
Game::gsm->AdvanceState();
break;
case SDLK_i:
Game::gsm->GameOver();
break;
default: default:
break; break;
} }
} }
else if (Game::event.type == SDL_KEYUP)
if (Game::event.type == SDL_KEYUP)
{ {
switch (Game::event.key.keysym.sym) switch (Game::event.key.keysym.sym)
{ {
@ -98,11 +107,6 @@ public:
} }
break; break;
case SDLK_k: case SDLK_k:
SDL_Delay(100);
if (!Game::debugCollisionBoxes)
{ Game::debugCollisionBoxes = true; }
else
{Game::debugCollisionBoxes = false; }
break; break;
case SDLK_j: case SDLK_j:
transform->velocity.y = 0; transform->velocity.y = 0;
@ -110,11 +114,8 @@ public:
Game::gravityOnPlayer = true; Game::gravityOnPlayer = true;
break; break;
case SDLK_u: case SDLK_u:
// Advance the GSM state via the u key
Game::gsm->AdvanceState();
break; break;
case SDLK_i: case SDLK_i:
Game::gsm->GameOver();
break; break;
case SDLK_ESCAPE: // exit the game when Escape pressed case SDLK_ESCAPE: // exit the game when Escape pressed
Game::isRunning = false; Game::isRunning = false;
@ -124,7 +125,6 @@ public:
} }
} }
} }
}; };

View File

@ -172,11 +172,11 @@ void Game::handleEvents()
SDL_PollEvent(&event); SDL_PollEvent(&event);
switch (event.type) switch (event.type)
{ {
case SDL_QUIT: case SDL_QUIT:
isRunning = false; isRunning = false;
break; break;
default: default:
break; break;
} }
} }
@ -274,36 +274,19 @@ void Game::render()
{ {
p->draw(); p->draw();
} }
if (gsm->currentState==GameStateManager::ST_TITLESCREEN){
for (auto& guiElement : gui)
{
guiElement->draw();
}
for (auto& letter : uiText)
{
letter->draw();
}
}
for (auto& guiElement : gui)
{ SDL_RenderPresent(renderer);
guiElement->draw();
}
for (auto& letter : uiText)
{
letter->draw();
}
// Vector2D origPt;
// Vector2D destPt;
// origPt.Zero();
// destPt.x = 320.0*gScale;
// destPt.y = 240.0*gScale;
// drawLine(origPt,destPt,255,0,0);
// Vector2D pt1, pt2, pt3, pt4;
// pt1.x = 80.0*gScale;
// pt1.y = 80.0*gScale;
// pt2.x = 120.0*gScale;
// pt2.y = 80.0*gScale;
// pt3.x = 80.0*gScale;
// pt3.y = 120.0*gScale;
// pt4.x = 120.0*gScale;
// pt4.y = 120.0*gScale;
// Draw box with colors
// drawLine(pt1,pt2,0,0,255);
// drawLine(pt1,pt3,0,255,0);
// drawLine(pt2,pt4,255,255,0);
// drawLine(pt3,pt4,255,0,0);
SDL_RenderPresent(renderer);
} }
void Game::clean() void Game::clean()