Implementado el cambio de pantalla

This commit is contained in:
2022-08-20 15:41:23 +02:00
parent 7e93b3150f
commit 75c6acdd53
16 changed files with 364 additions and 62 deletions

View File

@@ -302,4 +302,74 @@ bool Player::isOnFloor()
onFloor |= ((map->getTile(f) == wall) || (map->getTile(f) == passable));
}
return onFloor;
}
// Comprueba si está situado en alguno de los cuatro bordes de la habitación
bool Player::isOnScreenBorder()
{
bool success = false;
border = b_none;
if (x < map->getPlayArea(b_left))
{
border = b_left;
success = true;
}
else if (x > map->getPlayArea(b_right) - w)
{
border = b_right;
success = true;
}
else if (y < map->getPlayArea(b_top))
{
border = b_top;
success = true;
}
else if (y > map->getPlayArea(b_bottom) - h)
{
border = b_bottom;
success = true;
}
return success;
}
// Devuelve el valor de la variable
e_border Player::getBorder()
{
return border;
}
// Cambia al jugador de un borde al opuesto. Util para el cambio de pantalla
void Player::switchBorders()
{
switch (border)
{
case b_top:
y = map->getPlayArea(b_bottom) - h;
break;
case b_bottom:
y = map->getPlayArea(b_top);
break;
case b_right:
x = map->getPlayArea(b_left);
break;
case b_left:
x = map->getPlayArea(b_right) - w;
break;
default:
break;
}
border = b_none;
}
// Pasa la referencia del mapa
void Player::setMap(Map *map)
{
this->map = map;
}