Maze Builder Docs 7.5.6
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{
13
14 class cell;
15 class distances;
16 class grid;
17 class grid_operations;
18
23 {
24 public:
25 explicit distance_grid(unsigned int width = 1u, unsigned int length = 1u, unsigned int levels = 1u);
26
27 distance_grid(const distance_grid &) = delete;
28
29 distance_grid &operator=(const distance_grid &) = delete;
30
31 distance_grid(distance_grid &&) noexcept = default;
32
33 distance_grid &operator=(distance_grid &&) noexcept = default;
34
38 // void configure(const std::vector<int>& indices) noexcept override;
39
43 virtual std::string contents_of(std::shared_ptr<cell> const &c) const noexcept override;
44
48 virtual std::uint32_t background_color_for(std::shared_ptr<cell> const &c) const noexcept override;
49
50 // Delegate to embedded grid
51 virtual grid_operations &operations() noexcept override;
52
53 virtual const grid_operations &operations() const noexcept override;
54
58 void calculate_distances(int start_index, int end_index) noexcept;
59
60 std::shared_ptr<distances> get_distances() const noexcept;
61
62 private:
63 std::string to_base36(int value) const;
64
65 std::shared_ptr<distances> m_distances;
66
67 std::unique_ptr<grid_interface> m_grid;
68 };
69}
70
71#endif // DISTANCE_GRID_H
A grid that can calculate distances between cells.
Definition distance_grid.h:23
virtual std::string contents_of(std::shared_ptr< cell > const &c) const noexcept override
virtual grid_operations & operations() noexcept override
Get access to grid operations interface.
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
A class that manages distances associated with cells in a grid.
Definition distances.h:19
Interface for the grid class.
Definition grid_interface.h:20
Interface for grid navigation and manipulation operations.
Definition grid_operations.h:18
Namespace for the maze builder.
Definition algo_interface.h:6