#pragma once #ifdef _DEBUG #include // 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