#pragma once #include "interfaces/matrix.hpp" #include "engine/data/vector2.hpp" #include #include #include #include // NOLINTNEXTLINE(cppcoreguidelines-special-member-functions) class ICellHelper { public: virtual ~ICellHelper() noexcept = default; [[nodiscard]] virtual auto is_cell_dying(const Vector2 &cell_pos) const noexcept -> bool = 0; [[nodiscard]] virtual auto get_birth_cell_positions(const std::list &cell_positions) const noexcept -> std::list = 0; [[nodiscard]] virtual auto find_neighbours(const Vector2 &cell_pos) const noexcept -> std::vector = 0; }; template using ICellHelperFactory = yacppdic::Factory( const std::shared_ptr> &matrix)>;