36 lines
1.3 KiB
C++
36 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#ifdef _DEBUG
|
|
|
|
#include <string> // Para string
|
|
|
|
#include "external/fkyaml_node.hpp" // Para fkyaml::node
|
|
#include "game/gameplay/room.hpp" // Para Room::Data
|
|
|
|
/**
|
|
* @brief Guardado de archivos YAML de habitaciones para el editor de mapas
|
|
*
|
|
* Lee el YAML original con fkyaml (para acceder a todos los campos: name_ca, name_en, etc.)
|
|
* Genera el YAML como texto formateado compacto (idéntico al formato original de los ficheros).
|
|
* Solo se usa en builds de debug.
|
|
*/
|
|
class RoomSaver {
|
|
public:
|
|
RoomSaver() = delete;
|
|
|
|
// Carga el YAML original desde disco como nodo fkyaml (lee del filesystem, no del pack)
|
|
static auto loadYAML(const std::string& file_path) -> fkyaml::node;
|
|
|
|
// Genera y guarda el YAML completo a disco
|
|
// original_yaml: nodo fkyaml con los datos originales (para campos que no se editan: name_ca, etc.)
|
|
// room_data: datos editados (posiciones de enemigos, items, etc.)
|
|
static auto saveYAML(const std::string& file_path, const fkyaml::node& original_yaml, const Room::Data& room_data) -> std::string;
|
|
|
|
private:
|
|
static auto buildYAML(const fkyaml::node& original_yaml, const Room::Data& room_data) -> std::string;
|
|
static auto roomConnectionToYAML(const std::string& connection) -> std::string;
|
|
static auto conveyorBeltToString(int direction) -> std::string;
|
|
};
|
|
|
|
#endif // _DEBUG
|