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

/**
 * Klasse zum Erstellen von MainMenu Objekten
 * Dient als Hauptmenü für die Anwendung
 * @author Lucas Bronson
 */
public class MainMenuView extends JPanel {

    private JLabel titelLabel = new JLabel("Studium versenken");
    private JButton lokalButton = new JButton("Lokal");
    private JButton multiButton = new JButton("Multiplayer");
    private JButton soundButton;

    Font robotoFont = new Font("Roboto", Font.BOLD, 45);
    private ImageIcon soundIcon = new ImageIcon("graphics/sound button.png");
    private ImageIcon muteIcon = new ImageIcon("graphics/sound button muted.png");

    /**
     * Konstruktor der MainMenuView Klasse
     * @param frame Der Mainframe der Anwendung über den alle Panels angezeigt werden.
     * @author Lucas Bronson
     */
    public MainMenuView(MainFrame frame) {
        setLayout(null);
        buildPanel(frame);
    }

    /**
     * Methode zum Füllen des Panels, Objekte werden dem frame hinzugefügt
     * @param frame Der Mainframe der Anwendung über den alle Panels angezeigt werden.
     * @author Lucas Bronson
     */
    private void buildPanel(MainFrame frame) {
        lokalButton.setBounds(200, 200, 500, 500);
        multiButton.setBounds(800, 200, 500, 500);
        titelLabel.setBounds(550, 10, 700, 100);
        soundButton = new JButton(soundIcon);
        soundButton.setBounds(20, 20, 128, 128);

        titelLabel.setFont(robotoFont);
        lokalButton.setFont(robotoFont.deriveFont(50f));
        multiButton.setFont(robotoFont.deriveFont(50f));

        add(titelLabel);
        add(lokalButton);
        add(multiButton);
        add(soundButton);

        // ActionListener um vom Hauptmenü zum LocalGame Menü zu wechseln
        lokalButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Lokales Spiel ausgewählt.");
                frame.showPanel("LocalGame"); // Panel wechseln
            }
        });

        // ActionListener um vom Hauptmenü zum MultiPlayerGame Menü zu wechseln
        multiButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Multiplayer-Spiel ausgewählt.");
                frame.showPanel("MultiplayerGame"); // Panel wechseln
            }
        });

        //Aufruf von toggleMute, falls der soundButton geklickt wird
        soundButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Soundbutton geklickt.");
                toggleMute();
            }
        });
    }

    /**
     * Setzt Sound auf Stumm/Laut und ändert Grafik, sodass
     * der aktuelle Stand der Grafik entspricht
     * @author Lucas Bronson, Joshua Kuklok
     */
    private void toggleMute() {
        if (soundButton.getIcon() == soundIcon) {
            soundButton.setIcon(muteIcon);
            SoundHandler.setSoundOn(false);
        } else {
            soundButton.setIcon(soundIcon);
            SoundHandler.setSoundOn(true);
        }
    }
}