forked from jaildesigner-jailgames/jaildoctors_dilemma
Solucionado el bug al buscar las superficies horizontales
This commit is contained in:
@@ -778,19 +778,28 @@ void Room::setBottomSurfaces()
|
|||||||
|
|
||||||
// Recorre el vector de tiles buscando tiles consecutivos para localizar las superficies
|
// Recorre el vector de tiles buscando tiles consecutivos para localizar las superficies
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
int lastOne = 0;
|
||||||
while (i < tile.size())
|
while (i < tile.size())
|
||||||
{
|
{
|
||||||
h_line_t line;
|
h_line_t line;
|
||||||
line.x1 = (tile[i] % mapWidth) * tileSize;
|
line.x1 = (tile[i] % mapWidth) * tileSize;
|
||||||
line.y = ((tile[i] / mapWidth) * tileSize) + tileSize - 1;
|
line.y = ((tile[i] / mapWidth) * tileSize) + tileSize - 1;
|
||||||
|
lastOne = i;
|
||||||
|
i++;
|
||||||
|
|
||||||
while (tile[i] + 1 == tile[i + 1])
|
while (tile[i] == tile[i - 1] + 1)
|
||||||
{
|
{
|
||||||
|
lastOne = i;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
line.x2 = ((tile[i] % mapWidth) * tileSize) + tileSize - 1;
|
|
||||||
|
line.x2 = ((tile[lastOne] % mapWidth) * tileSize) + tileSize - 1;
|
||||||
bottomSurfaces.push_back(line);
|
bottomSurfaces.push_back(line);
|
||||||
i++;
|
if (tile[i] == -1)
|
||||||
|
{ // Si el siguiente elemento es un separador, hay que saltarlo
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
debug->addToLog("B: " + std::to_string(line.x1) + "," + std::to_string(line.y) + "," + std::to_string(line.x2) + "," + std::to_string(line.y));
|
debug->addToLog("B: " + std::to_string(line.x1) + "," + std::to_string(line.y) + "," + std::to_string(line.x2) + "," + std::to_string(line.y));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -820,18 +829,27 @@ void Room::setTopSurfaces()
|
|||||||
|
|
||||||
// Recorre el vector de tiles buscando tiles consecutivos para localizar las superficies
|
// Recorre el vector de tiles buscando tiles consecutivos para localizar las superficies
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
int lastOne = 0;
|
||||||
while (i < tile.size())
|
while (i < tile.size())
|
||||||
{
|
{
|
||||||
h_line_t line;
|
h_line_t line;
|
||||||
line.x1 = (tile[i] % mapWidth) * tileSize;
|
line.x1 = (tile[i] % mapWidth) * tileSize;
|
||||||
line.y = (tile[i] / mapWidth) * tileSize;
|
line.y = (tile[i] / mapWidth) * tileSize;
|
||||||
while (tile[i] + 1 == tile[i + 1])
|
lastOne = i;
|
||||||
|
i++;
|
||||||
|
|
||||||
|
while (tile[i] == tile[i - 1] + 1)
|
||||||
{
|
{
|
||||||
|
lastOne = i;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
line.x2 = ((tile[i] % mapWidth) * tileSize) + tileSize - 1;
|
|
||||||
|
line.x2 = ((tile[lastOne] % mapWidth) * tileSize) + tileSize - 1;
|
||||||
topSurfaces.push_back(line);
|
topSurfaces.push_back(line);
|
||||||
i++;
|
if (tile[i] == -1)
|
||||||
|
{ // Si el siguiente elemento es un separador, hay que saltarlo
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
debug->addToLog("T: " + std::to_string(line.x1) + "," + std::to_string(line.y) + "," + std::to_string(line.x2) + "," + std::to_string(line.y));
|
debug->addToLog("T: " + std::to_string(line.x1) + "," + std::to_string(line.y) + "," + std::to_string(line.x2) + "," + std::to_string(line.y));
|
||||||
}
|
}
|
||||||
@@ -909,7 +927,6 @@ void Room::setRightSurfaces()
|
|||||||
}
|
}
|
||||||
line.y2 = ((tile[i] / mapWidth) * tileSize) + tileSize - 1;
|
line.y2 = ((tile[i] / mapWidth) * tileSize) + tileSize - 1;
|
||||||
rightSurfaces.push_back(line);
|
rightSurfaces.push_back(line);
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user