granera con sarna no pica
This commit is contained in:
@@ -62,8 +62,7 @@ void TilemapRenderer::setTile(int index, int tile_value) {
|
||||
map_surface_->fillRect(&cell, bg_color_);
|
||||
|
||||
if (tile_value > -1) {
|
||||
const bool IS_ANIMATED = (tile_value >= 18 * tile_set_width_) && (tile_value < 19 * tile_set_width_);
|
||||
if (!IS_ANIMATED) {
|
||||
if (!isAnimatedTile(tile_value)) {
|
||||
SDL_FRect clip = {.x = static_cast<float>((tile_value % tile_set_width_) * TILE_SIZE),
|
||||
.y = static_cast<float>((tile_value / tile_set_width_) * TILE_SIZE),
|
||||
.w = static_cast<float>(TILE_SIZE),
|
||||
@@ -107,11 +106,10 @@ void TilemapRenderer::fillMapTexture(const std::vector<int>& collision_tile_map)
|
||||
for (int y = 0; y < MAP_HEIGHT; ++y) {
|
||||
for (int x = 0; x < MAP_WIDTH; ++x) {
|
||||
const int INDEX = (y * MAP_WIDTH) + x;
|
||||
// Los tiles animados (fila 18 del tileset) no se pintan en la textura estática
|
||||
const bool IS_ANIMATED = (tile_map_[INDEX] >= 18 * tile_set_width_) && (tile_map_[INDEX] < 19 * tile_set_width_);
|
||||
// Los tiles animados no se pintan en la textura estática
|
||||
const bool HAS_TILE = tile_map_[INDEX] > -1;
|
||||
|
||||
if (HAS_TILE && !IS_ANIMATED) {
|
||||
if (HAS_TILE && !isAnimatedTile(tile_map_[INDEX])) {
|
||||
clip.x = (tile_map_[INDEX] % tile_set_width_) * TILE_SIZE;
|
||||
clip.y = (tile_map_[INDEX] / tile_set_width_) * TILE_SIZE;
|
||||
#ifdef _DEBUG
|
||||
@@ -145,8 +143,8 @@ void TilemapRenderer::setAnimatedTiles(const std::vector<int>& collision_tile_ma
|
||||
const int YC = (tile_map_[i] / tile_set_width_) * TILE_SIZE;
|
||||
|
||||
AnimatedTile at;
|
||||
at.sprite = std::make_shared<Sprite>(tileset_surface_, X, Y, 8, 8);
|
||||
at.sprite->setClip(XC, YC, 8, 8);
|
||||
at.sprite = std::make_shared<Sprite>(tileset_surface_, X, Y, TILE_SIZE, TILE_SIZE);
|
||||
at.sprite->setClip(XC, YC, TILE_SIZE, TILE_SIZE);
|
||||
at.x_orig = XC;
|
||||
animated_tiles_.push_back(at);
|
||||
}
|
||||
@@ -176,3 +174,7 @@ void TilemapRenderer::renderAnimatedTiles() {
|
||||
a.sprite->render();
|
||||
}
|
||||
}
|
||||
|
||||
auto TilemapRenderer::isAnimatedTile(int tile_value) const -> bool {
|
||||
return (tile_value >= ANIMATED_TILE_ROW * tile_set_width_) && (tile_value < (ANIMATED_TILE_ROW + 1) * tile_set_width_);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user