Convertido el juego a mapas con tiles de 8x8
This commit is contained in:
@@ -7,5 +7,5 @@ room_left=0
|
|||||||
room_right=0
|
room_right=0
|
||||||
|
|
||||||
[tilemap]
|
[tilemap]
|
||||||
01.tmx
|
01_8.tmx
|
||||||
[tilemap-end]
|
[tilemap-end]
|
||||||
34
data/map/01_8.tmx
Normal file
34
data/map/01_8.tmx
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.9" tiledversion="1.9.1" orientation="orthogonal" renderorder="right-down" width="40" height="26" tilewidth="8" tileheight="8" infinite="0" nextlayerid="2" nextobjectid="1">
|
||||||
|
<tileset firstgid="1" source="../../../volcano_2022_resources/tilesets/tiles_surface.tsx"/>
|
||||||
|
<layer id="1" name="Capa de patrones 1" width="40" height="26">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,263,264,0,0,0,0,0,0,0,0,257,258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,295,296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,263,264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,295,296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,263,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,263,0,0,0,0,
|
||||||
|
0,0,0,0,239,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,257,258,257,258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,93,94,0,0,0,0,0,0,263,0,0,0,0,0,0,
|
||||||
|
0,0,0,289,290,289,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,126,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,158,0,0,0,0,263,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,190,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,193,194,0,0,0,0,0,0,0,0,0,0,0,0,0,281,282,277,278,279,280,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,225,226,0,0,0,0,0,0,0,0,281,275,275,275,275,313,314,309,310,311,312,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
263,264,263,264,263,264,263,264,263,264,263,264,263,264,263,264,263,264,263,266,266,266,283,284,266,265,266,264,263,264,263,264,263,264,263,264,263,264,263,264,
|
||||||
|
295,296,295,296,295,296,295,296,295,296,295,296,295,296,295,296,295,296,295,296,295,296,315,316,298,297,298,296,295,296,295,296,295,296,295,296,295,296,295,296
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
||||||
@@ -23,9 +23,9 @@ Map::Map(std::string file, SDL_Renderer *renderer, Asset *asset)
|
|||||||
fillMapTexture();
|
fillMapTexture();
|
||||||
|
|
||||||
// Inicializa variables
|
// Inicializa variables
|
||||||
tile_width = 16;
|
tile_width = 16/2;
|
||||||
map_width = 20;
|
map_width = 20*2;
|
||||||
map_height = 13;
|
map_height = 13*2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
@@ -194,10 +194,10 @@ void Map::fillMapTexture()
|
|||||||
texture_bg->render(renderer, 0, 0, &clip);
|
texture_bg->render(renderer, 0, 0, &clip);
|
||||||
|
|
||||||
// Dibuja el mapeado de tiles
|
// Dibuja el mapeado de tiles
|
||||||
const int tile_size = 16;
|
const int tile_size = 16/2;
|
||||||
const int tileset_width_in_tiles = 16;
|
const int tileset_width_in_tiles = 16*2;
|
||||||
const int map_width_in_tiles = 20;
|
const int map_width_in_tiles = 20*2;
|
||||||
const int map_height_in_tiles = 13;
|
const int map_height_in_tiles = 13*2;
|
||||||
|
|
||||||
clip = {0, 0, tile_size, tile_size};
|
clip = {0, 0, tile_size, tile_size};
|
||||||
|
|
||||||
@@ -240,13 +240,13 @@ void Map::render()
|
|||||||
t_tile_map Map::getTile(SDL_Point p)
|
t_tile_map Map::getTile(SDL_Point p)
|
||||||
{
|
{
|
||||||
const int tile = tilemap[((p.y / tile_width) * map_width) + (p.x / tile_width)];
|
const int tile = tilemap[((p.y / tile_width) * map_width) + (p.x / tile_width)];
|
||||||
const int png_width = 16;
|
const int png_width = 16*2;
|
||||||
|
|
||||||
if (tile >= 0 && tile < 4 * png_width)
|
if (tile >= 0 && tile < 4*2 * png_width)
|
||||||
{
|
{
|
||||||
return nothing;
|
return nothing;
|
||||||
}
|
}
|
||||||
else if (tile >= (4 * png_width) && tile < 8 * png_width)
|
else if (tile >= (4*2 * png_width) && tile < 8*2 * png_width)
|
||||||
{
|
{
|
||||||
return wall;
|
return wall;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,8 +43,8 @@ Player::Player(SDL_Renderer *renderer, Asset *asset, Input *input, Map *map)
|
|||||||
coins = 0;
|
coins = 0;
|
||||||
key.insert(key.end(), {0, 0, 0, 0, 0, 0});
|
key.insert(key.end(), {0, 0, 0, 0, 0, 0});
|
||||||
const SDL_Point p = {0, 0};
|
const SDL_Point p = {0, 0};
|
||||||
collider.insert(collider.end(), {p, p, p, p, p, p});
|
collider.insert(collider.end(), {p, p, p, p, p, p, p, p, p, p, p, p});
|
||||||
underFeet.insert(underFeet.end(), {p, p});
|
underFeet.insert(underFeet.end(), {p, p, p});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
@@ -139,15 +139,33 @@ void Player::updateColliders()
|
|||||||
{
|
{
|
||||||
const SDL_Point p = {(int)x, (int)y};
|
const SDL_Point p = {(int)x, (int)y};
|
||||||
|
|
||||||
|
// Lado izquierdo
|
||||||
collider[0] = p;
|
collider[0] = p;
|
||||||
collider[1] = {p.x, p.y + 12};
|
collider[1] = {p.x, p.y + 7};
|
||||||
collider[2] = {p.x, p.y + 23};
|
collider[2] = {p.x, p.y + 12};
|
||||||
collider[3] = {p.x + 15, p.y};
|
collider[3] = {p.x, p.y + 18};
|
||||||
collider[4] = {p.x + 15, p.y + 12};
|
collider[4] = {p.x, p.y + 23};
|
||||||
collider[5] = {p.x + 15, p.y + 23};
|
|
||||||
|
// Lado derecho
|
||||||
|
collider[5] = {p.x + 15, p.y};
|
||||||
|
collider[6] = {p.x + 15, p.y + 7};
|
||||||
|
collider[7] = {p.x + 15, p.y + 12};
|
||||||
|
collider[8] = {p.x + 15, p.y + 18};
|
||||||
|
collider[9] = {p.x + 15, p.y + 23};
|
||||||
|
|
||||||
|
// Centro
|
||||||
|
collider[10] = {p.x + 7, p.y};
|
||||||
|
collider[11] = {p.x + 7, p.y + 23};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Actualiza los puntos de los pies
|
||||||
|
void Player::updateFeet()
|
||||||
|
{
|
||||||
|
const SDL_Point p = {(int)x, (int)y};
|
||||||
|
|
||||||
underFeet[0] = {p.x, p.y + 24};
|
underFeet[0] = {p.x, p.y + 24};
|
||||||
underFeet[1] = {p.x + 15, p.y + 24};
|
underFeet[1] = {p.x + 7, p.y + 24};
|
||||||
|
underFeet[2] = {p.x + 15, p.y + 24};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compruena las colisiones con el mapa
|
// Compruena las colisiones con el mapa
|
||||||
@@ -224,7 +242,7 @@ void Player::animate()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (abs(vx) < 1.00f)
|
if (abs(vx) < 0.50f)
|
||||||
{
|
{
|
||||||
sprite->setCurrentAnimation("stand");
|
sprite->setCurrentAnimation("stand");
|
||||||
}
|
}
|
||||||
@@ -242,7 +260,7 @@ bool Player::isOnFloor()
|
|||||||
{
|
{
|
||||||
bool onFloor = false;
|
bool onFloor = false;
|
||||||
|
|
||||||
updateColliders();
|
updateFeet();
|
||||||
|
|
||||||
for (auto f : underFeet)
|
for (auto f : underFeet)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -57,6 +57,9 @@ public:
|
|||||||
// Actualiza los puntos de colisión
|
// Actualiza los puntos de colisión
|
||||||
void updateColliders();
|
void updateColliders();
|
||||||
|
|
||||||
|
// Actualiza los puntos de los pies
|
||||||
|
void updateFeet();
|
||||||
|
|
||||||
// Compruena las colisiones con el mapa
|
// Compruena las colisiones con el mapa
|
||||||
bool checkMapCollisions();
|
bool checkMapCollisions();
|
||||||
|
|
||||||
|
|||||||
@@ -139,6 +139,7 @@ bool Prog::setFileList()
|
|||||||
// Ficheros binarios
|
// Ficheros binarios
|
||||||
asset->add("/data/map/01.map", data);
|
asset->add("/data/map/01.map", data);
|
||||||
asset->add("/data/map/01.tmx", data);
|
asset->add("/data/map/01.tmx", data);
|
||||||
|
asset->add("/data/map/01_8.tmx", data);
|
||||||
asset->add("/data/config.bin", data, false);
|
asset->add("/data/config.bin", data, false);
|
||||||
asset->add("/data/gamecontrollerdb.txt", data);
|
asset->add("/data/gamecontrollerdb.txt", data);
|
||||||
asset->add("/data/animations/player.ani", data);
|
asset->add("/data/animations/player.ani", data);
|
||||||
|
|||||||
Reference in New Issue
Block a user