- afegides claus i portes al editor
- fix: crear una nova habitació no modificava la memoria, soles els fitxers
This commit is contained in:
@@ -78,6 +78,40 @@ void DoorManager::tryUnlock(const SDL_FRect& player_rect) {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
// Mueve una puerta del editor: limpia los WALLs viejos, reposiciona el sprite,
|
||||
// y reescribe los WALLs nuevos si la puerta sigue siendo bloqueante.
|
||||
void DoorManager::moveDoor(int index, float x, float y) {
|
||||
if (index < 0 || index >= static_cast<int>(doors_.size())) { return; }
|
||||
auto& door = doors_[index];
|
||||
|
||||
// Limpiar los WALLs viejos antes de mover
|
||||
if (door->isBlocking()) {
|
||||
writeDoorTiles(*door, static_cast<int>(TileCollider::Tile::EMPTY));
|
||||
}
|
||||
|
||||
// Reposicionar el sprite y el collider del Door
|
||||
door->setPosition(x, y);
|
||||
|
||||
// Re-escribir los WALLs nuevos en la nueva posición si sigue siendo bloqueante
|
||||
if (door->isBlocking()) {
|
||||
writeDoorTiles(*door, static_cast<int>(TileCollider::Tile::WALL));
|
||||
}
|
||||
}
|
||||
|
||||
// Elimina una puerta del editor, limpiando los WALLs antes de borrarla del vector
|
||||
void DoorManager::removeDoor(int index) {
|
||||
if (index < 0 || index >= static_cast<int>(doors_.size())) { return; }
|
||||
auto& door = doors_[index];
|
||||
|
||||
if (door->isBlocking()) {
|
||||
writeDoorTiles(*door, static_cast<int>(TileCollider::Tile::EMPTY));
|
||||
}
|
||||
|
||||
doors_.erase(doors_.begin() + index);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Setea las 4 celdas que ocupa la puerta (1 col × 4 filas) al valor indicado
|
||||
void DoorManager::writeDoorTiles(const Door& door, int tile_value) {
|
||||
// Convertir posición en píxeles a coordenadas de tile
|
||||
|
||||
Reference in New Issue
Block a user