aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bootstrap.cpp4
-rw-r--r--src/game/cell_helper.hpp4
-rw-r--r--src/game/cell_helper_impl.hpp11
-rw-r--r--src/interfaces/cell_helper.hpp4
4 files changed, 12 insertions, 11 deletions
diff --git a/src/bootstrap.cpp b/src/bootstrap.cpp
index 368f2a8..b8649ec 100644
--- a/src/bootstrap.cpp
+++ b/src/bootstrap.cpp
@@ -73,7 +73,7 @@ auto bootstrap() noexcept -> yacppdic::DIContainer
generation_tracker,
status_manager,
user_input_observer,
- cell_helper_factory(*(scene->get_matrix())),
+ cell_helper_factory(scene->get_matrix()),
rle_reader);
});
@@ -105,7 +105,7 @@ auto bootstrap() noexcept -> yacppdic::DIContainer
});
di_container.bind<ICellHelperFactory<char>>().to_factory(
- [](const IMatrix<char> &matrix)
+ [](const std::shared_ptr<IMatrix<char>> &matrix)
{
return std::make_unique<CellHelper<char>>(matrix);
});
diff --git a/src/game/cell_helper.hpp b/src/game/cell_helper.hpp
index ee5ab27..cf84a75 100644
--- a/src/game/cell_helper.hpp
+++ b/src/game/cell_helper.hpp
@@ -13,7 +13,7 @@ template <typename MatrixElement>
class CellHelper : public ICellHelper
{
public:
- explicit CellHelper(const IMatrix<MatrixElement> &matrix) noexcept;
+ explicit CellHelper(std::shared_ptr<IMatrix<MatrixElement>> matrix) noexcept;
[[nodiscard]] auto is_cell_dying(const Vector2 &cell_pos) const noexcept
-> bool override;
@@ -26,7 +26,7 @@ public:
-> std::vector<Vector2> override;
private:
- const IMatrix<MatrixElement> &_matrix;
+ std::shared_ptr<IMatrix<MatrixElement>> _matrix;
static auto _get_position_neighbours(const Vector2 &position) noexcept
-> std::list<Vector2>;
diff --git a/src/game/cell_helper_impl.hpp b/src/game/cell_helper_impl.hpp
index b7da413..bd40794 100644
--- a/src/game/cell_helper_impl.hpp
+++ b/src/game/cell_helper_impl.hpp
@@ -6,18 +6,19 @@
template <typename MatrixElement>
constexpr auto has_matrix_value(
- const IMatrix<MatrixElement> &matrix,
+ const std::shared_ptr<IMatrix<MatrixElement>> &matrix,
const MatrixElement &value) noexcept
{
return [&matrix, &value](const Vector2 &pos)
{
- return matrix.get(pos) == value;
+ return matrix->get(pos) == value;
};
}
template <typename MatrixElement>
-CellHelper<MatrixElement>::CellHelper(const IMatrix<MatrixElement> &matrix) noexcept
- : _matrix(matrix)
+CellHelper<MatrixElement>::CellHelper(
+ std::shared_ptr<IMatrix<MatrixElement>> matrix) noexcept
+ : _matrix(std::move(matrix))
{
}
@@ -75,7 +76,7 @@ auto CellHelper<MatrixElement>::find_neighbours(const Vector2 &cell_pos) const n
std::vector<Vector2> cell_positions = {};
const auto matrix_size =
- Bounds({.width = _matrix.get_column_cnt(), .height = _matrix.get_row_cnt()});
+ Bounds({.width = _matrix->get_column_cnt(), .height = _matrix->get_row_cnt()});
const auto neighbours = _get_position_neighbours(cell_pos);
diff --git a/src/interfaces/cell_helper.hpp b/src/interfaces/cell_helper.hpp
index d814aa7..69bf8b0 100644
--- a/src/interfaces/cell_helper.hpp
+++ b/src/interfaces/cell_helper.hpp
@@ -28,5 +28,5 @@ public:
};
template <typename MatrixElement>
-using ICellHelperFactory =
- yacppdic::Factory<std::unique_ptr<ICellHelper>(const IMatrix<MatrixElement> &matrix)>;
+using ICellHelperFactory = yacppdic::Factory<std::unique_ptr<ICellHelper>(
+ const std::shared_ptr<IMatrix<MatrixElement>> &matrix)>;