Implementado el cambio de pantalla

This commit is contained in:
2022-08-20 15:41:23 +02:00
parent 7e93b3150f
commit 75c6acdd53
16 changed files with 364 additions and 62 deletions

View File

@@ -8,7 +8,7 @@ Map::Map(std::string file, SDL_Renderer *renderer, Asset *asset)
map_width = 40;
map_height = 26;
tileset_width = 32;
// Copia los punteros a objetos
this->asset = asset;
this->renderer = renderer;
@@ -223,9 +223,11 @@ void Map::render()
}
// Devuelve el tipo de tile que hay en un punto
t_tile_map Map::getTile(SDL_Point p)
e_tile_map Map::getTile(SDL_Point p)
{
const int tile = tilemap[((p.y / tile_size) * map_width) + (p.x / tile_size)];
const int x = std::max(getPlayArea(b_left), (std::min(p.x, getPlayArea(b_right))));
const int y = std::max(getPlayArea(b_top), (std::min(p.y, getPlayArea(b_bottom))));
const int tile = tilemap[((y / tile_size) * map_width) + (x / tile_size)];
const int png_width = 32;
if (tile >= 0 && tile < 8 * png_width)
@@ -240,6 +242,8 @@ t_tile_map Map::getTile(SDL_Point p)
{
return passable;
}
return nothing;
}
// Devuelve el valor de la variable
@@ -252,4 +256,60 @@ int Map::getTileSize()
int Map::getTileIndex(SDL_Point p)
{
return tilemap[((p.y / tile_size) * map_width) + (p.x / tile_size)];
}
// Devuelve el valor de los bordes de la zona de juego
int Map::getPlayArea(e_border border)
{
switch (border)
{
case b_top:
return 0;
break;
case b_left:
return 0;
break;
case b_right:
return tile_size * map_width;
break;
case b_bottom:
return tile_size * map_height;
break;
default:
break;
}
return -1;
}
// Devuelve el nombre del fichero de la habitación en funcion del borde
std::string Map::getRoomFileName(e_border border)
{
switch (border)
{
case b_top:
return room_up;
break;
case b_left:
return room_left;
break;
case b_right:
return room_right;
break;
case b_bottom:
return room_down;
break;
default:
break;
}
return "";
}