Ya funcionan los tiles atravesables
This commit is contained in:
@@ -145,6 +145,9 @@ void Game::draw()
|
||||
text = "status: " + std::to_string(mPlayer->status);
|
||||
mText->write(0, 17 * 8, text);
|
||||
|
||||
text = "foot: " + std::to_string((int)mPlayer->getLeftFoot().y);
|
||||
mText->write(0, 18 * 8, text);
|
||||
|
||||
// Actualiza la pantalla
|
||||
mScreen->blit();
|
||||
}
|
||||
@@ -208,14 +211,24 @@ void Game::checkPlayerOnBorder()
|
||||
// Comprueba si el jugador esta sobre el suelo
|
||||
void Game::checkPlayerOnFloor()
|
||||
{
|
||||
// Comprueba ambos pies
|
||||
if ((mRoom->isFloor(mPlayer->getLeftFoot())) || (mRoom->isFloor(mPlayer->getRightFoot())))
|
||||
{
|
||||
mPlayer->setStatus(STATUS_STANDING);
|
||||
}
|
||||
else if (mPlayer->getStatus() != STATUS_JUMPING)
|
||||
{
|
||||
mPlayer->setStatus(STATUS_FALLING);
|
||||
// Comprueba si tiene suelo bajo los pies solo cuando no hay velocidad de subida
|
||||
// y solo cuando el pie este encima de un bloque, es decir, en multiplos de 8
|
||||
if ((mPlayer->getVelY() >= 0) && ((int)mPlayer->getLeftFoot().y % 8 == 0))
|
||||
{ // Comprueba ambos pies
|
||||
bool test = false;
|
||||
test |= (mRoom->getTile(mPlayer->getLeftFoot()) == TILE_SOLID);
|
||||
test |= (mRoom->getTile(mPlayer->getRightFoot()) == TILE_SOLID);
|
||||
test |= (mRoom->getTile(mPlayer->getLeftFoot()) == TILE_TRAVESSABLE);
|
||||
test |= (mRoom->getTile(mPlayer->getRightFoot()) == TILE_TRAVESSABLE);
|
||||
|
||||
if (test)
|
||||
{
|
||||
mPlayer->setStatus(STATUS_STANDING);
|
||||
}
|
||||
else if (mPlayer->getStatus() != STATUS_JUMPING)
|
||||
{
|
||||
mPlayer->setStatus(STATUS_FALLING);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,14 +247,14 @@ void Game::checkPlayerAndWalls()
|
||||
SDL_Point p7 = {rect.x + 7, rect.y + 15};
|
||||
SDL_Point p8 = {rect.x, rect.y + 15};
|
||||
|
||||
bool test = mRoom->isFloor(p1);
|
||||
test |= mRoom->isFloor(p2);
|
||||
test |= mRoom->isFloor(p3);
|
||||
test |= mRoom->isFloor(p4);
|
||||
test |= mRoom->isFloor(p5);
|
||||
test |= mRoom->isFloor(p6);
|
||||
test |= mRoom->isFloor(p7);
|
||||
test |= mRoom->isFloor(p8);
|
||||
bool test = (mRoom->getTile(p1) == TILE_SOLID);
|
||||
test |= (mRoom->getTile(p2) == TILE_SOLID);
|
||||
test |= (mRoom->getTile(p3) == TILE_SOLID);
|
||||
test |= (mRoom->getTile(p4) == TILE_SOLID);
|
||||
test |= (mRoom->getTile(p5) == TILE_SOLID);
|
||||
test |= (mRoom->getTile(p6) == TILE_SOLID);
|
||||
test |= (mRoom->getTile(p7) == TILE_SOLID);
|
||||
test |= (mRoom->getTile(p8) == TILE_SOLID);
|
||||
|
||||
if (test)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user