#pragma once #include #include // Para shared_ptr #include // Para vector #include "utils/defines.hpp" class Surface; class TilemapRenderer { public: TilemapRenderer(std::vector tile_map, int tile_set_width, std::shared_ptr tileset_surface, Uint8 bg_color); ~TilemapRenderer() = default; TilemapRenderer(const TilemapRenderer&) = delete; auto operator=(const TilemapRenderer&) -> TilemapRenderer& = delete; TilemapRenderer(TilemapRenderer&&) = delete; auto operator=(TilemapRenderer&&) -> TilemapRenderer& = delete; void initialize(const std::vector& collision_tile_map); void update(float delta_time); void render(); #ifdef _DEBUG void redrawMap(const std::vector& collision_tile_map); void setTile(int index, int tile_value); #endif void setPaused(bool paused) { is_paused_ = paused; } [[nodiscard]] auto getMapSurface() const -> std::shared_ptr { return map_surface_; } private: static constexpr int TILE_SIZE = Tile::SIZE; static constexpr int MAP_WIDTH = Map::WIDTH; static constexpr int MAP_HEIGHT = Map::HEIGHT; static constexpr int PLAY_AREA_WIDTH = PlayArea::WIDTH; static constexpr int PLAY_AREA_HEIGHT = PlayArea::HEIGHT; std::vector tile_map_; int tile_set_width_; std::shared_ptr tileset_surface_; Uint8 bg_color_{0}; std::shared_ptr map_surface_; bool is_paused_{false}; void fillMapTexture(const std::vector& collision_tile_map); };