#pragma once #include "interfaces/cell_helper.hpp" #include "interfaces/matrix.hpp" #include "engine/data/vector2.hpp" #include #include template class CellHelper : public ICellHelper { public: explicit CellHelper(std::shared_ptr> matrix) noexcept; [[nodiscard]] auto is_cell_dying(const Vector2 &cell_pos) const noexcept -> bool override; [[nodiscard]] auto get_birth_cell_positions(const std::vector &cell_positions) const noexcept -> std::vector override; [[nodiscard]] auto find_neighbours(const Vector2 &cell_pos) const noexcept -> std::vector override; private: const std::shared_ptr> _matrix; static auto _get_position_neighbours(const Vector2 &position) noexcept -> std::vector; }; #include "cell_helper_impl.hpp"