#pragma once
#include "Torneo.h"
#include <QWidget>
#include <QPainter>

// ──────────────────────────────────────────────
//  WidgetBracket
//  Dibuja el cuadro eliminatorio con QPainter.
//  Al hacer clic en una partida se puede ingresar
//  el resultado.
// ──────────────────────────────────────────────
class WidgetBracket : public QWidget {
    Q_OBJECT
public:
    explicit WidgetBracket(QWidget* parent = nullptr);

    void setTorneo(Torneo* t);
    void refresh();

signals:
    void partidaSeleccionada(int rondaIdx, int partidaIdx);

protected:
    void paintEvent(QPaintEvent* event)  override;
    void mousePressEvent(QMouseEvent* e) override;
    void resizeEvent(QResizeEvent* e)    override;

private:
    struct CeldaInfo { QRect rect; int ronda; int partida; };

    void dibujarRonda(QPainter& p, int rondaIdx, int x, int anchoCol, int altoTotal);
    void dibujarPartida(QPainter& p, const QRect& rect, const Partida& partida, bool activa);
    void recalcularCeldas();

    Torneo*                m_torneo  = nullptr;
    std::vector<CeldaInfo> m_celdas;

    // Dimensiones
    static constexpr int CARD_W   = 180;
    static constexpr int CARD_H   = 56;
    static constexpr int COL_GAP  = 60;
    static constexpr int ROW_GAP  = 20;
    static constexpr int PADDING  = 30;
};
