package org.Views;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;

/**
 * Fenêtre affichée à la fin de la partie, indiquant le score et proposant
 * de quitter ou de rejouer.
 */
public class VueGameOver extends JFrame {
    private JButton quitterButton;
    private JButton rejouerButton;

    /**
     * Crée une nouvelle fenêtre de fin de partie.
     *
     * @param score le score obtenu par le joueur
     * @param quitterListener action à effectuer lors du clic sur "Quitter"
     * @param rejouerListener action à effectuer lors du clic sur "Rejouer"
     */
    public VueGameOver(int score, ActionListener quitterListener, Runnable rejouerListener) {
        setTitle("FIN DE PARTIE");
        setSize(400, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        // Fenetre de fin de partie
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        // Texte de fin de partie
        JLabel messageFin = new JLabel("GAME OVER !", SwingConstants.CENTER);
        messageFin.setFont(new Font("Arial", Font.BOLD, 32));
        panel.add(messageFin, BorderLayout.NORTH);
        // Texte de score
        JLabel messageScore = new JLabel("Votre score : " + score, SwingConstants.CENTER);
        messageScore.setFont(new Font("Arial", Font.PLAIN, 24));
        panel.add(messageScore, BorderLayout.CENTER);
        // Boutons
        JPanel buttonPanel = new JPanel();
        quitterButton = new JButton("Quitter");
        rejouerButton = new JButton("Rejouer");

        // mise en forme boutons
        quitterButton.addActionListener(quitterListener);
        rejouerButton.addActionListener(e -> {
            dispose();
            rejouerListener.run();
        });
        buttonPanel.add(quitterButton);
        buttonPanel.add(rejouerButton);
        panel.add(buttonPanel, BorderLayout.SOUTH);
        setContentPane(panel);
        setVisible(true);
    }
}
