fix: editor no aplicava a memoria, soles a fitxer

This commit is contained in:
2026-04-08 12:49:20 +02:00
parent 87cc58b5dd
commit 5e02854e7a
7 changed files with 82 additions and 0 deletions

View File

@@ -24,6 +24,15 @@ class CollisionMap {
[[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_;

View File

@@ -124,6 +124,51 @@ void Room::setItemColors(Uint8 color1, Uint8 color2) {
item_mgr->getItem(i)->setColors(color1, color2);
}
}
// Cambia un collision tile en vivo (para editor)
void Room::setCollisionTile(int index, int value) {
collision_map_->setCollisionTile(index, value);
}
// Cambia una conexión de habitación en vivo (para editor)
void Room::setConnection(Border border, const std::string& room_name) {
switch (border) {
case Border::TOP:
upper_room_ = room_name;
break;
case Border::BOTTOM:
lower_room_ = room_name;
break;
case Border::LEFT:
left_room_ = room_name;
break;
case Border::RIGHT:
right_room_ = room_name;
break;
default:
break;
}
}
// Cambia el tileset en vivo (para editor)
void Room::setTileSet(const std::string& tile_set_file) {
tile_set_file_ = tile_set_file;
surface_ = Resource::Cache::get()->getSurface(tile_set_file);
tile_set_width_ = surface_->getWidth() / TILE_SIZE;
tilemap_renderer_ = std::make_unique<TilemapRenderer>(
tile_map_,
tile_set_width_,
surface_,
bg_color_,
conveyor_belt_direction_);
tilemap_renderer_->initialize(collision_map_->getCollisionTileMap());
}
// Cambia la dirección del conveyor belt en vivo (para editor)
void Room::setConveyorBeltDirection(int direction) {
conveyor_belt_direction_ = direction;
collision_map_->setConveyorBeltDirection(direction);
}
#endif
// Actualiza las variables y objetos de la habitación

View File

@@ -64,6 +64,10 @@ class Room {
auto getItemManager() -> ItemManager* { return item_manager_.get(); }
void setItemColors(Uint8 color1, Uint8 color2);
void setTile(int index, int tile_value);
void setCollisionTile(int index, int value);
void setConnection(Border border, const std::string& room_name);
void setTileSet(const std::string& tile_set_file);
void setConveyorBeltDirection(int direction);
[[nodiscard]] auto getTileSetFile() const -> const std::string& { return tile_set_file_; }
[[nodiscard]] auto getTileSetWidth() const -> int { return tile_set_width_; }
#endif