Haciendo las superficies verticales

This commit is contained in:
2022-09-07 17:31:40 +02:00
parent 2039b2f8db
commit a73c11effa

View File

@@ -762,6 +762,36 @@ void Room::setTopSurfaces()
// Calcula las superficies laterales izquierdas
void Room::setLeftSurfaces()
{
std::vector<int> tile;
// Busca todos los tiles de tipo wall (excepto los de la primera columna) que a su izquierda
// tienen un tile de tipo vacio
for (int i = 0; i < tilemap.size(); i++)
{
if (i % mapWidth != 0)
{
if (getTile(i) == t_wall && getTile(i - 1) == t_empty)
{
tile.push_back(i);
}
}
}
// Recorre el vector de tiles buscando tiles consecutivos para localizar las superficies
int i = 0;
while (i < tile.size())
{
v_line_t line;
line.x = (tile[i] % mapWidth) * tileSize;
line.y1 = ((tile[i] / mapWidth) * tileSize);
while (tile[i] + 1 == tile[i + mapWidth])
{
i++;
}
line.x2 = ((tile[i] % mapWidth) * tileSize) + tileSize - 1;
leftSurfaces.push_back(line);
i++;
}
}
// Calcula las superficies laterales derechas