Files

35 lines
1.4 KiB
C++

#pragma once
#include <string>
#include <vector>
// Reescriu NOMÉS el bloc `data:` d'un YAML del tilemap, preservant byte a
// byte la resta del fitxer: comentaris, ordre de claus, format de
// `geometry:` i `entities:`, encoding i line endings entre línies no
// tocades. Pensat exclusivament per a l'editor (Debug): només la graella
// canvia durant l'edició; el preàmbul i l'epíleg mai.
//
// Semàntica del bloc:
// - Línia de capçalera: primera aparició de "data:" a columna 0.
// - Contingut: línies següents indentades (espai o tab). Una línia buida
// o una línia a columna 0 marquen la fi del bloc.
//
// Format de sortida:
// - Cada fila en flow style: ` - [v0, v1, v2, ...]`, valors separats
// per `,` i alineats a dreta dins de `max_width` caràcters (calculat
// a partir del valor més llarg de la graella), cadascun precedit
// d'espais de farciment per mantenir columnes visuals.
// - Line endings: '\n' al bloc generat (el preàmbul i l'epíleg es
// copien byte a byte, així que no els toquem).
//
// Escriptura atòmica: via `<path>.tmp` + `std::filesystem::rename`, així
// un crash a mitja escriptura mai deixa el YAML corrupte.
//
// Retorna false si el fitxer no es pot obrir, no conté "data:" a columna
// 0, o l'escriptura/renombrament atòmic falla.
namespace TilemapWriter {
auto saveDataBlock(const std::string& path, const std::vector<std::vector<int>>& data) -> bool;
} // namespace TilemapWriter