JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
CameraFraming.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 <optional>
7#include <string>
8#include <string_view>
9#include <vector>
10
15
16namespace core {
17
27
29[[nodiscard]] std::string_view cameraFramingModeName(CameraFramingMode mode) noexcept;
30
32[[nodiscard]] std::optional<CameraFramingMode> parseCameraFramingMode(
33 std::string_view name) noexcept;
34
42inline constexpr int DEFAULT_ROOM_WIDTH_TILES = 24;
43inline constexpr int DEFAULT_ROOM_HEIGHT_TILES = 14;
44
53struct CameraZone {
54 int x = 0;
55 int y = 0;
56 int width = 1;
57 int height = 1;
58
59 [[nodiscard]] bool operator==(const CameraZone&) const noexcept = default;
60};
61
73 std::optional<int> roomWidthTiles;
74 std::optional<int> roomHeightTiles;
82 std::vector<CameraZone> zones;
83
84 [[nodiscard]] bool operator==(const CameraFramingConfig&) const noexcept = default;
85};
86
99 const std::optional<CameraFramingConfig>& declared, int levelWidth, int levelHeight) noexcept;
100
110[[nodiscard]] std::optional<std::string> validateCameraFramingConfig(
111 const CameraFramingConfig& config, int levelWidth, int levelHeight);
112
113} // namespace core
Espace de noms du moteur et de la logique de jeu.
Definition Bootstrap.h:9
std::string_view cameraFramingModeName(CameraFramingMode mode) noexcept
Nom JSON du mode (symétrique à parseCameraFramingMode), pour la sérialisation.
Definition CameraFraming.cpp:11
constexpr int DEFAULT_ROOM_WIDTH_TILES
Taille de salle par défaut du mode par salle, en cases.
Definition CameraFraming.h:42
constexpr int DEFAULT_ROOM_HEIGHT_TILES
Definition CameraFraming.h:43
CameraFramingMode
Mode de cadrage de caméra d'un niveau (EX-REN-016) : décision de conception, pas une règle déduite de...
Definition CameraFraming.h:22
@ WholeLevel
Le niveau entier tient dans le cadre (EX-REN-013).
Definition CameraFraming.h:23
@ Follow
Caméra de suivi du personnage (zone morte, anticipation, bornage).
Definition CameraFraming.h:25
@ PerRoom
Cadrage salle par salle, coupure nette au franchissement (EX-REN-015).
Definition CameraFraming.h:24
std::optional< std::string > validateCameraFramingConfig(const CameraFramingConfig &config, int levelWidth, int levelHeight)
Valide un cadrage déclaré (EX-LVL-004) : taille de vue nulle/négative ou supérieure au niveau,...
Definition CameraFraming.cpp:52
CameraFramingConfig resolveCameraFraming(const std::optional< CameraFramingConfig > &declared, int levelWidth, int levelHeight) noexcept
Résout le cadrage effectif d'un niveau à partir du champ déclaré (peut être absent).
Definition CameraFraming.cpp:40
std::optional< CameraFramingMode > parseCameraFramingMode(std::string_view name) noexcept
Reconnaît le nom JSON d'un mode ; std::nullopt si non reconnu (mode inconnu, EX-LVL-004).
Definition CameraFraming.cpp:24
Cadrage de caméra résolu d'un niveau : le mode retenu et ses paramètres.
Definition CameraFraming.h:71
std::optional< int > roomWidthTiles
Definition CameraFraming.h:73
std::vector< CameraZone > zones
Zones de caméra dessinées à la main (mode PerRoom uniquement) : si non vide, remplace entièrement le ...
Definition CameraFraming.h:82
CameraFramingMode mode
Definition CameraFraming.h:72
std::optional< int > roomHeightTiles
Definition CameraFraming.h:74
bool operator==(const CameraFramingConfig &) const noexcept=default
Rectangle de caméra dessiné à la main par le level designer (mode par salle), en cases.
Definition CameraFraming.h:53
int x
Definition CameraFraming.h:54
bool operator==(const CameraZone &) const noexcept=default
int width
Definition CameraFraming.h:56
int y
Definition CameraFraming.h:55
int height
Definition CameraFraming.h:57