forked from jaildesigner-jailgames/jaildoctors_dilemma
Ahora si, terminado el calculo de superficies
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
name=the test room
|
name=the test room
|
||||||
bgColor=blue
|
bgColor=black
|
||||||
border=blue
|
border=blue
|
||||||
tileset=standard.png
|
tileset=standard.png
|
||||||
roomUp=0
|
roomUp=0
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<tileset firstgid="1" source="../../../jaildoctors_dilemma_resources/tilesets/standard.tsx"/>
|
<tileset firstgid="1" source="../../../jaildoctors_dilemma_resources/tilesets/standard.tsx"/>
|
||||||
<layer id="1" name="Capa de patrones 1" width="32" height="16">
|
<layer id="1" name="Capa de patrones 1" width="32" height="16">
|
||||||
<data encoding="csv">
|
<data encoding="csv">
|
||||||
26,26,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,
|
26,26,0,26,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,
|
||||||
26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,
|
26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,
|
||||||
26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,
|
26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,
|
||||||
26,0,0,0,0,0,86,0,0,0,0,0,0,0,0,0,0,183,0,0,0,0,0,0,0,0,0,0,0,0,0,26,
|
26,0,0,0,0,0,86,0,0,0,0,0,0,0,0,0,0,183,0,0,0,0,0,0,0,0,0,0,0,0,0,26,
|
||||||
@@ -13,12 +13,12 @@
|
|||||||
26,0,0,0,0,0,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,
|
26,0,0,0,0,0,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,
|
||||||
26,0,0,0,0,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,
|
26,0,0,0,0,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,
|
||||||
26,0,0,0,0,0,0,0,0,161,212,212,212,212,212,212,212,0,212,212,181,0,0,0,0,0,0,0,0,0,0,26,
|
26,0,0,0,0,0,0,0,0,161,212,212,212,212,212,212,212,0,212,212,181,0,0,0,0,0,0,0,0,0,0,26,
|
||||||
26,0,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0,0,0,181,0,0,0,0,0,0,0,0,0,26,
|
26,0,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0,0,0,181,0,0,0,0,0,0,0,0,0,0,
|
||||||
26,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,269,0,0,0,0,181,0,0,0,0,0,0,0,0,26,
|
0,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,269,0,0,0,0,181,0,0,0,0,0,0,0,0,26,
|
||||||
26,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0,269,0,0,0,0,0,181,0,0,0,0,0,0,0,0,
|
26,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0,269,0,0,0,0,0,181,0,0,0,0,0,0,0,0,
|
||||||
26,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0,0,289,0,0,0,0,0,0,181,0,0,0,0,0,0,0,
|
0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0,0,289,0,0,0,0,0,0,181,0,0,0,0,0,0,0,
|
||||||
26,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,
|
26,0,26,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,
|
||||||
26,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26
|
26,0,26,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26
|
||||||
</data>
|
</data>
|
||||||
</layer>
|
</layer>
|
||||||
</map>
|
</map>
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, D
|
|||||||
this->screen = screen;
|
this->screen = screen;
|
||||||
this->input = input;
|
this->input = input;
|
||||||
this->debug = debug;
|
this->debug = debug;
|
||||||
|
debug->setEnabled(true);
|
||||||
|
|
||||||
// Crea los objetos
|
// Crea los objetos
|
||||||
scoreboard = new ScoreBoard(renderer, asset, &playerLives, &itemsPicked, &clock);
|
scoreboard = new ScoreBoard(renderer, asset, &playerLives, &itemsPicked, &clock);
|
||||||
@@ -33,7 +34,6 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, D
|
|||||||
playerLives = 9;
|
playerLives = 9;
|
||||||
itemsPicked = 0;
|
itemsPicked = 0;
|
||||||
|
|
||||||
debug->setEnabled(true);
|
|
||||||
player->setInvincible(debug->getEnabled());
|
player->setInvincible(debug->getEnabled());
|
||||||
musicEnabled = !debug->getEnabled();
|
musicEnabled = !debug->getEnabled();
|
||||||
|
|
||||||
@@ -211,7 +211,7 @@ void Game::renderDebugInfo()
|
|||||||
SDL_RenderFillRect(renderer, &rect);
|
SDL_RenderFillRect(renderer, &rect);
|
||||||
|
|
||||||
// Pinta la rejilla
|
// Pinta la rejilla
|
||||||
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 64);
|
/*SDL_SetRenderDrawColor(renderer, 255, 255, 255, 48);
|
||||||
for (int i = 0; i < PLAY_AREA_BOTTOM; i += 8)
|
for (int i = 0; i < PLAY_AREA_BOTTOM; i += 8)
|
||||||
{ // Lineas horizontales
|
{ // Lineas horizontales
|
||||||
SDL_RenderDrawLine(renderer, 0, i, PLAY_AREA_RIGHT, i);
|
SDL_RenderDrawLine(renderer, 0, i, PLAY_AREA_RIGHT, i);
|
||||||
@@ -219,7 +219,7 @@ void Game::renderDebugInfo()
|
|||||||
for (int i = 0; i < PLAY_AREA_RIGHT; i += 8)
|
for (int i = 0; i < PLAY_AREA_RIGHT; i += 8)
|
||||||
{ // Lineas verticales
|
{ // Lineas verticales
|
||||||
SDL_RenderDrawLine(renderer, i, 0, i, PLAY_AREA_BOTTOM - 1);
|
SDL_RenderDrawLine(renderer, i, 0, i, PLAY_AREA_BOTTOM - 1);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// Pinta mascaras de sprite
|
// Pinta mascaras de sprite
|
||||||
SDL_SetRenderDrawColor(renderer, 0, 255, 0, 192);
|
SDL_SetRenderDrawColor(renderer, 0, 255, 0, 192);
|
||||||
|
|||||||
@@ -437,33 +437,46 @@ void Room::fillMapTexture()
|
|||||||
{
|
{
|
||||||
clip.x = ((tilemap[(y * 32) + x] - 1) % 20) * 8;
|
clip.x = ((tilemap[(y * 32) + x] - 1) % 20) * 8;
|
||||||
clip.y = ((tilemap[(y * 32) + x] - 1) / 20) * 8;
|
clip.y = ((tilemap[(y * 32) + x] - 1) / 20) * 8;
|
||||||
texture->render(renderer, x * 8, y * 8, &clip);
|
// texture->render(renderer, x * 8, y * 8, &clip);
|
||||||
|
if (debug->getEnabled())
|
||||||
|
{
|
||||||
|
if (clip.x != -8)
|
||||||
|
{
|
||||||
|
clip.x = x * 8;
|
||||||
|
clip.y = y * 8;
|
||||||
|
SDL_SetRenderDrawColor(renderer, 32, 32, 32, 0xFF);
|
||||||
|
SDL_RenderFillRect(renderer, &clip);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ****
|
// ****
|
||||||
if (debug->getEnabled())
|
if (debug->getEnabled())
|
||||||
{
|
{
|
||||||
SDL_SetRenderDrawColor(renderer, 0x00, 0xFF, 0x00, 0xFF);
|
|
||||||
for (auto l : bottomSurfaces)
|
for (auto l : bottomSurfaces)
|
||||||
{
|
{
|
||||||
|
SDL_SetRenderDrawColor(renderer, (rand() % 128) + 80, (rand() % 128) + 80, (rand() % 128) + 80, 0xFF);
|
||||||
SDL_RenderDrawLine(renderer, l.x1, l.y, l.x2, l.y);
|
SDL_RenderDrawLine(renderer, l.x1, l.y, l.x2, l.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0xFF);
|
SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0xFF);
|
||||||
for (auto l : topSurfaces)
|
for (auto l : topSurfaces)
|
||||||
{
|
{
|
||||||
|
SDL_SetRenderDrawColor(renderer, (rand() % 128) + 80, (rand() % 128) + 80, (rand() % 128) + 80, 0xFF);
|
||||||
SDL_RenderDrawLine(renderer, l.x1, l.y, l.x2, l.y);
|
SDL_RenderDrawLine(renderer, l.x1, l.y, l.x2, l.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF);
|
SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF);
|
||||||
for (auto l : leftSurfaces)
|
for (auto l : leftSurfaces)
|
||||||
{
|
{
|
||||||
|
SDL_SetRenderDrawColor(renderer, (rand() % 128) + 80, (rand() % 128) + 80, (rand() % 128) + 80, 0xFF);
|
||||||
SDL_RenderDrawLine(renderer, l.x, l.y1, l.x, l.y2);
|
SDL_RenderDrawLine(renderer, l.x, l.y1, l.x, l.y2);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
|
SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
|
||||||
for (auto l : rightSurfaces)
|
for (auto l : rightSurfaces)
|
||||||
{
|
{
|
||||||
|
SDL_SetRenderDrawColor(renderer, (rand() % 128)+80, (rand() % 128)+80, (rand() % 128)+80, 0xFF);
|
||||||
SDL_RenderDrawLine(renderer, l.x, l.y1, l.x, l.y2);
|
SDL_RenderDrawLine(renderer, l.x, l.y1, l.x, l.y2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -703,8 +716,8 @@ void Room::setBottomSurfaces()
|
|||||||
{
|
{
|
||||||
std::vector<int> tile;
|
std::vector<int> tile;
|
||||||
|
|
||||||
// Busca todos los tiles de tipo wall (excepto los de la última fila) que debajo
|
// Busca todos los tiles de tipo muro que no tengan debajo otro muro
|
||||||
// tienen un tile de tipo vacio
|
// Hay que recorrer la habitación por filas (excepto los de la última fila)
|
||||||
for (int i = 0; i < tilemap.size() - mapWidth; i++)
|
for (int i = 0; i < tilemap.size() - mapWidth; i++)
|
||||||
{
|
{
|
||||||
if (getTile(i) == t_wall && getTile(i + mapWidth) != t_wall)
|
if (getTile(i) == t_wall && getTile(i + mapWidth) != t_wall)
|
||||||
@@ -730,10 +743,6 @@ void Room::setBottomSurfaces()
|
|||||||
while (tile[i] + 1 == tile[i + 1])
|
while (tile[i] + 1 == tile[i + 1])
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
if (i % mapWidth == mapWidth - 1)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
line.x2 = ((tile[i] % mapWidth) * tileSize) + tileSize - 1;
|
line.x2 = ((tile[i] % mapWidth) * tileSize) + tileSize - 1;
|
||||||
bottomSurfaces.push_back(line);
|
bottomSurfaces.push_back(line);
|
||||||
@@ -746,8 +755,8 @@ void Room::setTopSurfaces()
|
|||||||
{
|
{
|
||||||
std::vector<int> tile;
|
std::vector<int> tile;
|
||||||
|
|
||||||
// Busca todos los tiles de tipo wall (excepto los de la primera fila) que encima
|
// Busca todos los tiles de tipo muro o pasable que no tengan encima un muro
|
||||||
// tienen un tile de tipo vacio
|
// Hay que recorrer la habitación por filas (excepto los de la primera fila)
|
||||||
for (int i = mapWidth; i < tilemap.size(); i++)
|
for (int i = mapWidth; i < tilemap.size(); i++)
|
||||||
{
|
{
|
||||||
if ((getTile(i) == t_wall || getTile(i) == t_passable) && getTile(i - mapWidth) != t_wall)
|
if ((getTile(i) == t_wall || getTile(i) == t_passable) && getTile(i - mapWidth) != t_wall)
|
||||||
@@ -772,10 +781,6 @@ void Room::setTopSurfaces()
|
|||||||
while (tile[i] + 1 == tile[i + 1])
|
while (tile[i] + 1 == tile[i + 1])
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
if (i % mapWidth == mapWidth - 1)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
line.x2 = ((tile[i] % mapWidth) * tileSize) + tileSize - 1;
|
line.x2 = ((tile[i] % mapWidth) * tileSize) + tileSize - 1;
|
||||||
topSurfaces.push_back(line);
|
topSurfaces.push_back(line);
|
||||||
@@ -788,20 +793,23 @@ void Room::setLeftSurfaces()
|
|||||||
{
|
{
|
||||||
std::vector<int> tile;
|
std::vector<int> tile;
|
||||||
|
|
||||||
// Busca todos los tiles de tipo wall (excepto los de la primera columna) que a su izquierda
|
// Busca todos los tiles de tipo muro que no tienen a su izquierda un tile de tipo muro
|
||||||
// tienen un tile de tipo vacio
|
// Hay que recorrer la habitación por columnas (excepto los de la primera columna)
|
||||||
for (int i = 0; i < tilemap.size(); i++)
|
for (int i = 1; i < mapWidth; ++i)
|
||||||
{
|
{
|
||||||
if (i % mapWidth != 0)
|
for (int j = 0; j < mapHeight; ++j)
|
||||||
{
|
{
|
||||||
if (getTile(i) == t_wall && getTile(i - 1) != t_wall)
|
const int pos = (j * mapWidth + i);
|
||||||
|
if (getTile(pos) == t_wall && getTile(pos - 1) != t_wall)
|
||||||
{
|
{
|
||||||
tile.push_back(i);
|
tile.push_back(pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recorre el vector de tiles buscando tiles consecutivos para localizar las superficies
|
// Recorre el vector de tiles buscando tiles consecutivos
|
||||||
|
// (Los tiles de la misma columna, la diferencia entre ellos es de mapWidth)
|
||||||
|
// para localizar las superficies
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (i < tile.size())
|
while (i < tile.size())
|
||||||
{
|
{
|
||||||
@@ -823,20 +831,23 @@ void Room::setRightSurfaces()
|
|||||||
{
|
{
|
||||||
std::vector<int> tile;
|
std::vector<int> tile;
|
||||||
|
|
||||||
// Busca todos los tiles de tipo wall (excepto los de la ultima columna) que a su derecha
|
// Busca todos los tiles de tipo muro que no tienen a su derecha un tile de tipo muro
|
||||||
// tienen un tile de tipo vacio
|
// Hay que recorrer la habitación por columnas (excepto los de la última columna)
|
||||||
for (int i = 0; i < tilemap.size(); i++)
|
for (int i = 0; i < mapWidth - 1; ++i)
|
||||||
{
|
{
|
||||||
if (i % mapWidth != mapWidth - 1)
|
for (int j = 0; j < mapHeight; ++j)
|
||||||
{
|
{
|
||||||
if (getTile(i) == t_wall && getTile(i + 1) != t_wall)
|
const int pos = (j * mapWidth + i);
|
||||||
|
if (getTile(pos) == t_wall && getTile(pos + 1) != t_wall)
|
||||||
{
|
{
|
||||||
tile.push_back(i);
|
tile.push_back(pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recorre el vector de tiles buscando tiles consecutivos para localizar las superficies
|
// Recorre el vector de tiles buscando tiles consecutivos
|
||||||
|
// (Los tiles de la misma columna, la diferencia entre ellos es de mapWidth)
|
||||||
|
// para localizar las superficies
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (i < tile.size())
|
while (i < tile.size())
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user