35 lines
1.4 KiB
C++
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
|