//
// AIClientFactory Implementation
//

#include "AIClientFactory.hpp"

#include "src/main/cpp/net/eagle0/common/mcts/abstract/MCTSTypes.hpp"
#include "src/main/cpp/net/eagle0/shardok/ai/ShardokAIClient.hpp"

namespace shardok {
namespace ai_testing_common {

auto AIClientFactory::Create(
        PlayerId playerId,
        bool isDefender,
        const net::eagle0::shardok::storage::fb::HexMap* hexMap,
        const SettingsGetter& settings,
        AIAlgorithmType algorithmType,
        ScoringCalculatorType scoringType) -> std::unique_ptr<ShardokAIClient> {
    // Use default MCTS configuration
    mcts::MCTSConfig mctsConfig{};

    return std::make_unique<ShardokAIClient>(
            playerId,
            isDefender,
            hexMap,
            settings,
            algorithmType,
            scoringType,
            mctsConfig);
}

}  // namespace ai_testing_common
}  // namespace shardok
