#pragma once
#include "Torneo.h"
#include <memory>
#include <QString>

// ──────────────────────────────────────────────
//  TorneoFactory  (patrón Factory Method)
//  Crea torneos según el tipo solicitado sin
//  exponer las clases concretas al cliente.
// ──────────────────────────────────────────────
class TorneoFactory {
public:
    enum class TipoTorneo {
        ELIMINATORIO_SIMPLE,
        DOBLE_ELIMINACION
    };

    static std::unique_ptr<Torneo> crear(
        TipoTorneo tipo,
        const QString& nombre,
        const QString& juego);

    static QString nombreTipo(TipoTorneo tipo);
    static QStringList tiposDisponibles();
    static TipoTorneo tipoDesdeString(const QString& s);
};
