41 lines
1.4 KiB
C++
41 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include <vector>
|
|
|
|
#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<int> 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<int>& { return collision_tile_map_; }
|
|
|
|
#ifdef _DEBUG
|
|
void setCollisionTile(int index, int value) {
|
|
if (index >= 0 && index < static_cast<int>(collision_tile_map_.size())) {
|
|
collision_tile_map_[index] = value;
|
|
}
|
|
}
|
|
void setConveyorBeltDirection(int direction) { conveyor_belt_direction_ = direction; }
|
|
#endif
|
|
|
|
private:
|
|
std::vector<int> collision_tile_map_;
|
|
int conveyor_belt_direction_;
|
|
TileCollider tile_collider_;
|
|
};
|