// SPDX-License-Identifier: LGPL-3.0-or-later
// Author: Kristian Lytje

#pragma once

#include <rigidbody/selection/BodySelectStrategy.h>
#include <settings/RigidBodySettings.h>

#include <memory>

namespace ausaxs::rigidbody {
    namespace factory {
        std::unique_ptr<selection::BodySelectStrategy> create_selection_strategy(observer_ptr<const Rigidbody> molecule);

        std::unique_ptr<selection::BodySelectStrategy> create_selection_strategy(
            observer_ptr<const Rigidbody> molecule, settings::rigidbody::BodySelectStrategyChoice choice
        );

        std::unique_ptr<selection::BodySelectStrategy> create_selection_strategy(
            observer_ptr<const Rigidbody> molecule,
            settings::rigidbody::BodySelectStrategyChoice body_choice,
            settings::rigidbody::ParameterMaskStrategyChoice mask_choice
        );
    }
}