diff --git a/source/room.cpp b/source/room.cpp index e6711e1..1d44c48 100644 --- a/source/room.cpp +++ b/source/room.cpp @@ -762,6 +762,36 @@ void Room::setTopSurfaces() // Calcula las superficies laterales izquierdas void Room::setLeftSurfaces() { + std::vector 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