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