guardat dels canvis en la habitacio

This commit is contained in:
2026-04-02 11:10:03 +02:00
parent b31346830f
commit a6fae7b001
10 changed files with 796 additions and 65 deletions

View File

@@ -0,0 +1,36 @@
#pragma once
#ifdef _DEBUG
#include <string> // Para string
#include "external/fkyaml_node.hpp" // Para fkyaml::node
#include "game/entities/enemy.hpp" // Para Enemy::Data
#include "game/entities/item.hpp" // Para Item::Data
#include "game/entities/player.hpp" // Para Player::SpawnData
/**
* @brief Edición parcial de archivos YAML de habitaciones
*
* Lee el YAML original, modifica solo los campos editados y serializa.
* Preserva todos los campos que no se editan (name_ca, comentarios del formato, etc.)
* Solo se usa en builds de debug (editor de mapas).
*/
class RoomSaver {
public:
RoomSaver() = delete;
// Carga el YAML original desde disco (llamar al entrar al editor)
static auto loadYAML(const std::string& file_path) -> fkyaml::node;
// Guarda el nodo YAML completo a disco
static auto saveYAML(const std::string& file_path, const fkyaml::node& yaml) -> std::string;
// Modificaciones puntuales sobre el nodo YAML (posiciones en pixels, se convierten a tiles)
static void updateEnemyPosition(fkyaml::node& yaml, int index, float x, float y);
static void updateEnemyBound1(fkyaml::node& yaml, int index, int x, int y);
static void updateEnemyBound2(fkyaml::node& yaml, int index, int x, int y);
static void updateItemPosition(fkyaml::node& yaml, int index, float x, float y);
};
#endif // _DEBUG