#pragma once #ifdef _DEBUG #include #include #include // 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 `.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 col; std::optional row; std::optional sarc_col; std::optional sarc_row; }; auto saveEntitiesBlock(const std::string& path, const std::vector& spawns) -> bool; } // namespace EntityWriter #endif // _DEBUG