Maze Builder Docs 8.8.13
Loading...
Searching...
No Matches
distance_grid.h
Go to the documentation of this file.
1#ifndef DISTANCE_GRID_H
2#define DISTANCE_GRID_H
3
5
6#include <future>
7#include <memory>
8#include <string>
9
12namespace mazes
13{
14 class cell;
15 class distances;
16 class grid;
17 class grid_operations;
18
21 class distance_grid : public grid_interface
22 {
23 public:
24 explicit distance_grid(
25 unsigned int width = 1u,
26 unsigned int length = 1u,
27 unsigned int levels = 1u);
28
29 distance_grid(const distance_grid &) = delete;
30
31 distance_grid &operator=(const distance_grid &) = delete;
32
33 distance_grid(distance_grid &&) noexcept = default;
34
35 distance_grid &operator=(distance_grid &&) noexcept = default;
36
40 [[nodiscard]] std::string contents_of(std::shared_ptr<cell> const &c) const noexcept override;
41
45 [[nodiscard]] std::uint32_t
46 background_color_for(std::shared_ptr<cell> const &c) const noexcept override;
47
48 // Delegate to embedded grid
49 [[nodiscard]] grid_operations &operations() noexcept override;
50
51 [[nodiscard]] const grid_operations &operations() const noexcept override;
52
57 void resize(unsigned int rows, unsigned int cols, unsigned int levels) const noexcept;
58
62 void calculate_distances(int start_index, int end_index) noexcept;
63
66 [[nodiscard]] std::shared_ptr<distances> get_distances() const noexcept;
67
68 private:
69 std::shared_ptr<distances> m_distances;
70
71 std::unique_ptr<grid_interface> m_grid;
72 };
73}
74
75#endif // DISTANCE_GRID_H
Cell class with links to other cells.
Definition cell.h:18
std::shared_ptr< distances > get_distances() const noexcept
Get the distances object.
void resize(unsigned int rows, unsigned int cols, unsigned int levels) const noexcept
Resize the grid.
std::uint32_t background_color_for(std::shared_ptr< cell > const &c) const noexcept override
void calculate_distances(int start_index, int end_index) noexcept
Calculates distances for a range of indices.
std::string contents_of(std::shared_ptr< cell > const &c) const noexcept override
grid_operations & operations() noexcept override
Get access to grid operations interface.
A class that manages distances associated with cells in a grid.
Definition distances.h:22
Interface for the grid class.
Definition grid_interface.h:20
Interface for grid navigation and manipulation operations.
Definition grid_operations.h:22
General purpose grid class for 2D maze generation.
Definition grid.h:24