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