JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
LevelLoader.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Valentin Eloy
2// SPDX-License-Identifier: GPL-3.0-or-later
3
4#pragma once
5
6#include <filesystem>
7#include <optional>
8#include <string>
9#include <string_view>
10
11#include "Core/Levels/Level.h"
12
17
18namespace core {
19
46
71inline constexpr int LEVEL_FORMAT_VERSION = 3;
72
82 std::optional<Level> level;
83 std::string error;
85
87 [[nodiscard]] bool ok() const noexcept {
88 return level.has_value();
89 }
90};
91
102public:
104 [[nodiscard]] static LevelLoadResult loadFromString(std::string_view json);
105
107 [[nodiscard]] static LevelLoadResult loadFromFile(const std::filesystem::path& path);
108};
109
110} // namespace core
Niveau chargé : grille de tuiles, entrée/sortie et mécanismes.
Charge un niveau au format JSON (objet {name, width, height, tiles} où tiles est une liste d'objets {...
Definition LevelLoader.h:101
static LevelLoadResult loadFromString(std::string_view json)
Charge un niveau depuis une chaîne JSON.
Definition LevelLoader.cpp:483
static LevelLoadResult loadFromFile(const std::filesystem::path &path)
Charge un niveau depuis un fichier.
Definition LevelLoader.cpp:667
Espace de noms du moteur et de la logique de jeu.
Definition Bootstrap.h:9
constexpr int LEVEL_FORMAT_VERSION
Version courante du format de niveau JSON (EX-LVL-005).
Definition LevelLoader.h:71
@ FileNotFound
Fichier absent ou illisible.
Definition JsonDocument.h:30
@ None
Pas d'erreur.
Definition JsonDocument.h:29
@ ParseError
JSON malformé, ou racine qui n'est pas un objet.
Definition JsonDocument.h:31
LevelValidationError
Catégorie d'échec de chargement/validation d'un niveau (LOT-15, EX-EDIT-012).
Definition LevelLoader.h:28
@ UnresolvedMechanism
Porte ou danger commuté lié à un identifiant d'interrupteur inexistant.
Definition LevelLoader.h:38
@ InvalidEntryCount
Zéro ou plusieurs tuiles d'entrée (une seule attendue).
Definition LevelLoader.h:36
@ OutOfBounds
Tuile positionnée hors des dimensions déclarées.
Definition LevelLoader.h:32
@ UnknownTileType
Type de tuile non reconnu.
Definition LevelLoader.h:31
@ None
Pas d'erreur (chargement réussi).
Definition LevelLoader.h:29
@ UnsupportedFormatVersion
"version" du fichier supérieure à celle gérée (EX-LVL-005).
Definition LevelLoader.h:41
@ DuplicateSwitchId
Deux interrupteurs partagent le même identifiant.
Definition LevelLoader.h:35
@ InvalidCameraFraming
Cadrage de caméra invalide (EX-LVL-006) : mode inconnu, taille de salle nulle/supérieure au niveau,...
Definition LevelLoader.h:42
@ InvalidExitCount
Zéro ou plusieurs tuiles de sortie (une seule attendue).
Definition LevelLoader.h:37
@ DuplicatePosition
Deux tuiles à la même position.
Definition LevelLoader.h:33
@ MissingSwitchId
Interrupteur sans identifiant.
Definition LevelLoader.h:34
Résultat d'un chargement de niveau : soit un Level, soit une erreur décrite.
Definition LevelLoader.h:81
LevelValidationError errorCode
Definition LevelLoader.h:84
bool ok() const noexcept
Definition LevelLoader.h:87
std::string error
Definition LevelLoader.h:83
std::optional< Level > level
Definition LevelLoader.h:82