#pragma once #include #include "game/gameplay/tile_collider.hpp" /** * @brief Mapa de colisiones de una habitación * * Contiene el collision_tile_map (grid de tipos de tile) y el TileCollider * que proporciona queries de colisión directas contra el grid. */ class CollisionMap { public: CollisionMap(std::vector collision_tile_map, int conveyor_belt_direction); ~CollisionMap() = default; CollisionMap(const CollisionMap&) = delete; auto operator=(const CollisionMap&) -> CollisionMap& = delete; CollisionMap(CollisionMap&&) = delete; auto operator=(CollisionMap&&) -> CollisionMap& = delete; [[nodiscard]] auto getTileCollider() const -> const TileCollider& { return tile_collider_; } [[nodiscard]] auto getConveyorBeltDirection() const -> int { return conveyor_belt_direction_; } [[nodiscard]] auto getCollisionTileMap() const -> const std::vector& { return collision_tile_map_; } #ifdef _DEBUG void setCollisionTile(int index, int value) { if (index >= 0 && index < static_cast(collision_tile_map_.size())) { collision_tile_map_[index] = value; } } void setConveyorBeltDirection(int direction) { conveyor_belt_direction_ = direction; } #endif private: std::vector collision_tile_map_; int conveyor_belt_direction_; TileCollider tile_collider_; };