37 lines
1.3 KiB
C++
37 lines
1.3 KiB
C++
#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
|