feat(editor): EntityWriter — persisteix el bloc entities: al sortir
This commit is contained in:
1 parent
b4e36944d7
commit
ecb4625465
6 files changed
+213
-9
No files matched your search
@@ -0,0 +1,50 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
// Reescriu NOMÉS el bloc `entities:` d'un YAML de nivell, preservant byte
|
||||
// a byte la resta del fitxer: comentaris, ordre de claus, format del
|
||||
// `geometry:` i `data:`, encoding i line endings entre línies no tocades.
|
||||
// Pensat exclusivament per a l'editor (Debug).
|
||||
//
|
||||
// Format de sortida (estable, llegible a l'editor de text):
|
||||
// entities:
|
||||
// - type: torch
|
||||
// position: [4, 2]
|
||||
// - type: sarcophagus
|
||||
// sarc_position: [0, 0]
|
||||
// - type: door
|
||||
//
|
||||
// Semàntica del bloc origen:
|
||||
// - Línia de capçalera: primera aparició de "entities:" a columna 0.
|
||||
// Si manca, el writer FALLA i no toca el fitxer.
|
||||
// - Contingut: línies indentades (espai o tab). Una línia buida o una
|
||||
// línia a columna 0 marquen la fi del bloc.
|
||||
//
|
||||
// Si el fitxer original no té el bloc `entities:`, el writer no inventa
|
||||
// ubicació: retorna false per que el caller decidisca (mostrar error,
|
||||
// avortar, etc.) — no és funció del writer escollir l'estil del YAML.
|
||||
//
|
||||
// Escriptura atòmica: via `<path>.tmp` + `std::filesystem::rename`. Si
|
||||
// l'escriptura falla a meitat, el YAML original queda intacte.
|
||||
namespace EntityWriter {
|
||||
|
||||
// Cada spawn duplica l'estructura mínima del que el lector espera:
|
||||
// type sempre, i un dels (position, sarc_position) o cap (cas door).
|
||||
struct Spawn {
|
||||
std::string type;
|
||||
std::optional<int> col;
|
||||
std::optional<int> row;
|
||||
std::optional<int> sarc_col;
|
||||
std::optional<int> sarc_row;
|
||||
};
|
||||
|
||||
auto saveEntitiesBlock(const std::string& path, const std::vector<Spawn>& spawns) -> bool;
|
||||
|
||||
} // namespace EntityWriter
|
||||
|
||||
#endif // _DEBUG
|
||||
Reference in new issue
Block a user