Maze Builder Docs 6.7.5
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#include <unordered_map>
10
11namespace mazes {
12
13class cell;
14class distances;
15class grid;
16class grid_operations;
17
22public:
23
24 // Delete copy constructor and copy assignment operator to fix the static assertion failure
25 distance_grid(const distance_grid&) = delete;
26 distance_grid& operator=(const distance_grid&) = delete;
27
28 // Explicitly define move constructor and move assignment operator
29 distance_grid(distance_grid&&) noexcept = default;
30 distance_grid& operator=(distance_grid&&) noexcept = default;
31
32 explicit distance_grid(unsigned int width = 1u, unsigned int length = 1u, unsigned int levels = 1u);
33
37 //void configure(const std::vector<int>& indices) noexcept override;
38
42 virtual std::string contents_of(std::shared_ptr<cell> const& c) const noexcept override;
43
47 virtual std::uint32_t background_color_for(std::shared_ptr<cell> const& c) const noexcept override;
48
49 // Delegate to embedded grid
50 grid_operations& operations() noexcept override;
51
52 const grid_operations& operations() const noexcept;
53
57 void calculate_distances(int start_index, int end_index) noexcept;
58
59 std::shared_ptr<distances> get_distances() const noexcept;
60private:
61
62 std::shared_ptr<distances> m_distances;
63
64 std::unique_ptr<grid_interface> m_grid;
65
66 std::string to_base36(int value) const;
67};
68}
69
70#endif // DISTANCE_GRID_H
A grid that can calculate distances between cells.
Definition distance_grid.h:21
virtual std::string contents_of(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.
virtual std::uint32_t background_color_for(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:17
Interface for the grid class.
Definition grid_interface.h:18
Interface for grid navigation and manipulation operations.
Definition grid_operations.h:16
Namespace for the maze builder.
Definition algo_interface.h:9