Implementado el cambio de pantalla
This commit is contained in:
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user