JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
TileAutotile.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 <array>
7#include <cstdint>
8#include <string_view>
9
10#include "Core/Levels/TileMap.h"
11
16
17namespace hmi {
18
27enum NeighborBits : std::uint8_t {
28 NEIGHBOR_UP = 1u << 0,
29 NEIGHBOR_RIGHT = 1u << 1,
30 NEIGHBOR_DOWN = 1u << 2,
31 NEIGHBOR_LEFT = 1u << 3,
32};
33
35inline constexpr int AUTOTILE_SHEET_SIDE = 4;
36
39
42 int column = 0;
43 int row = 0;
44
45 [[nodiscard]] friend bool operator==(const AutotileCell& lhs,
46 const AutotileCell& rhs) noexcept {
47 return lhs.column == rhs.column && lhs.row == rhs.row;
48 }
49};
50
76[[nodiscard]] std::uint8_t solidNeighborMask(const core::TileMap& tiles, int column,
77 int row) noexcept;
78
87[[nodiscard]] AutotileCell autotileCell(std::uint8_t mask) noexcept;
88
97[[nodiscard]] AutotileCell autotileRepresentativeCell() noexcept;
98
110[[nodiscard]] std::string_view autotileConfigurationLabelKey(std::uint8_t mask) noexcept;
111
121[[nodiscard]] std::array<std::uint8_t, 9> autotileAssemblyMasks() noexcept;
122
123} // namespace hmi
Grille de tuiles typées d'un niveau.
Grille dense de tuiles typées (EX-GP-001), origine haut-gauche.
Definition TileMap.h:25
Definition AudioEngine.cpp:15
std::string_view autotileConfigurationLabelKey(std::uint8_t mask) noexcept
Clé de traduction décrivant la configuration de voisinage d'un masque, pour l'atelier pixel art (LOT-...
Definition TileAutotile.cpp:97
AutotileCell autotileCell(std::uint8_t mask) noexcept
Case de la planche 4×4 correspondant à un masque de voisinage.
Definition TileAutotile.cpp:87
constexpr int AUTOTILE_CONFIGURATION_COUNT
Nombre de configurations de voisinage distinctes.
Definition TileAutotile.h:38
constexpr int AUTOTILE_SHEET_SIDE
Nombre de cases par côté de la planche de raccords (4×4 = seize configurations).
Definition TileAutotile.h:35
std::uint8_t solidNeighborMask(const core::TileMap &tiles, int column, int row) noexcept
Calcule le masque de voisinage solide d'une case de la grille.
Definition TileAutotile.cpp:70
NeighborBits
Bits du masque de voisinage, un par voisin orthogonal solide.
Definition TileAutotile.h:27
@ NEIGHBOR_UP
Voisin du dessus solide.
Definition TileAutotile.h:28
@ NEIGHBOR_LEFT
Voisin de gauche solide.
Definition TileAutotile.h:31
@ NEIGHBOR_RIGHT
Voisin de droite solide.
Definition TileAutotile.h:29
@ NEIGHBOR_DOWN
Voisin du dessous solide.
Definition TileAutotile.h:30
AutotileCell autotileRepresentativeCell() noexcept
Case représentative d'une planche : l'intérieur plein (quatre voisins solides).
Definition TileAutotile.cpp:93
std::array< std::uint8_t, 9 > autotileAssemblyMasks() noexcept
Masques des neuf cases d'un assemblage 3×3 démonstratif (LOT-54 TACHE-08).
Definition TileAutotile.cpp:121
Position d'une case dans la planche de raccords, en cases (origine haut-gauche).
Definition TileAutotile.h:41
friend bool operator==(const AutotileCell &lhs, const AutotileCell &rhs) noexcept
Definition TileAutotile.h:45
int column
Definition TileAutotile.h:42
int row
Definition TileAutotile.h:43