package school_project.Menu;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import school_project.Controller;
import school_project.GameUI;
import school_project.MapGenerator;
import school_project.Parsers.FileParserFactory;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

public class MenuAccueil extends StackPane {
    public MenuAccueil(){
        super();
        //create all the objet that I need
        ChoiceBox<String> SlctDifficulty = new ChoiceBox<>();
        SlctDifficulty.getItems().addAll("Easy", "Medium", "Difficult");

        Label RdmLvl = new Label("Random Level : ");
        Button LoadLvl = new Button("Load game");
        Button SelectLevel= new Button("Select Level");

        Label Title = new Label("Welcome to Road to Master");
            SlctDifficulty.setOnAction(event -> {
                String choosediff = SlctDifficulty.getSelectionModel().getSelectedItem();
                System.out.println(choosediff);
                switch (choosediff) {
                    case "Easy":
                        try {
                            Controller.switchRoot(new GameUI(MapGenerator.generate(MapGenerator.Difficulty.Easy)));
                        } catch (FileNotFoundException e) {
                            throw new RuntimeException(e);
                        }
                        break;
                    case "Medium":
                            try {
                                Controller.switchRoot(new GameUI(MapGenerator.generate(MapGenerator.Difficulty.Medium)));
                            } catch (FileNotFoundException e) {
                                throw new RuntimeException(e);
                            }
                        break;
                    case "Difficult":
                            try {
                                Controller.switchRoot(new GameUI(MapGenerator.generate(MapGenerator.Difficulty.Difficult)));
                            } catch (FileNotFoundException e) {
                                throw new RuntimeException(e);
                            }
                        break;
                }
            });

        //set up all the Button where I need

        getChildren().addAll(Title,SlctDifficulty,SelectLevel,RdmLvl,LoadLvl);
        RdmLvl.setFont(Font.font(25));
        RdmLvl.setTextFill(Color.GOLD);
        Title.setFont(Font.font(40));
        Title.setTextFill(Color.RED);
        setAlignment(Title, Pos.TOP_CENTER);
        setAlignment(LoadLvl,Pos.BOTTOM_CENTER);
        setAlignment(SlctDifficulty,Pos.CENTER_LEFT);
        setAlignment(SelectLevel,Pos.CENTER_RIGHT);
        setAlignment(RdmLvl, Pos.CENTER_LEFT);

        setMargin(RdmLvl,new Insets(0,0,0,100));
        setMargin(SlctDifficulty,new Insets(0,0,0,300));
        setMargin(SelectLevel,new Insets(0,300,0,0));
        setMargin(Title,new Insets(200,0,0,0));
        setMargin(LoadLvl,new Insets(0,0,200,0));

        SelectLevel.setOnAction(event ->  Controller.switchRoot(new MenuLevel(1)));
        LoadLvl.setOnAction(event -> {
            try {
                Controller.switchRoot(new GameUI(FileParserFactory.loadMapFromFile(new File("save.slevel"))));
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        });

        getStyleClass().add("BorderPane");
        getStylesheets().add(String.valueOf(getClass().getResource("StyleMenuAcceuil.css")));
    }
}