package fr.monkhanny.dorfromantik.listeners;

import fr.monkhanny.dorfromantik.Options;
import fr.monkhanny.dorfromantik.game.EscapeMenu;
import fr.monkhanny.dorfromantik.gui.SettingsPanel;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;

public class GameSettingsButtonListener implements ActionListener {
    private JFrame gameFrame;
    private JFrame settingsFrame;
    private SettingsPanel settingsPanel;
    private EscapeMenu escapeMenu;

    public GameSettingsButtonListener(JFrame gameFrame, EscapeMenu escapeMenu) {
        this.gameFrame = gameFrame;
        this.escapeMenu = escapeMenu;
        this.settingsFrame = new JFrame("Paramètres - Dorfromantik");
        this.settingsPanel = new SettingsPanel(Options.mainMenu, settingsFrame);
        this.settingsPanel.setReturnButtonVisible(false); // On cache le bouton de retour au menu principal

        // Ajouter le WindowListener pour réafficher la gameFrame lors de la fermeture de settingsFrame
        this.settingsFrame.addWindowListener(new GameSettingsWindowListener(gameFrame));
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (escapeMenu != null) {  // Vérifier si escapeMenu est non nul
            escapeMenu.setVisible(false);
        }

        // Obtenir la taille et la position de la gameFrame
        int width = gameFrame.getWidth() - 50;
        int height = gameFrame.getHeight() - 50;
        int x = gameFrame.getX();
        int y = gameFrame.getY();

        // Appliquer ces dimensions et position à settingsFrame
        settingsFrame.setSize(width, height);
        settingsFrame.setLocation(x, y);

        // Ajouter le panneau des paramètres si ce n'est pas déjà fait
        settingsFrame.add(this.settingsPanel);

        // Cacher la gameFrame et afficher settingsFrame
        settingsFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        settingsFrame.setVisible(true);
        Options.isPaused = false;
    }
}
