Colision con el suelo terminada

This commit is contained in:
2022-07-06 21:04:45 +02:00
parent edba97cfc7
commit 90bbe77f39
6 changed files with 82 additions and 10 deletions

View File

@@ -12,7 +12,7 @@ Game::Game(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Lang *lang,
// Crea los objetos
mScreen = new Screen(window, renderer);
mRoom = new Room(mAsset->get("01.room"), mRenderer, mAsset);
mPlayer = new Player(mAsset->get("player01.png"), mRenderer, mAsset, mInput);
mPlayer = new Player(mAsset->get("player01.png"), mRenderer, mAsset, mInput, mRoom);
mEventHandler = new SDL_Event();
mTextureText = new LTexture();
mText = new Text(mAsset->get("smb2.txt"), mTextureText, renderer);
@@ -117,6 +117,7 @@ void Game::update()
mRoom->update();
mPlayer->update();
checkPlayerOnBorder();
checkPlayerOnFloor();
}
}
@@ -175,6 +176,9 @@ bool Game::changeRoom(std::string file)
// Crea un objeto habitación nuevo a partir del fichero
mRoom = new Room(mAsset->get(file), mRenderer, mAsset);
// Comunica al jugador la nueva referencia para la habitación
mPlayer->setRoom(mRoom);
success = true;
}
@@ -189,4 +193,18 @@ void Game::checkPlayerOnBorder()
changeRoom(mRoom->getRoom(mPlayer->getBorder()));
mPlayer->switchBorders();
}
}
// Comprueba si el jugador esta sobre el suelo
void Game::checkPlayerOnFloor()
{
// Comprueba ambos pies
if ((mRoom->isFloor(mPlayer->getLeftFoot())) || (mRoom->isFloor(mPlayer->getRightFoot())))
{
mPlayer->setFalling(false);
}
else
{
mPlayer->setFalling(true);
}
}