/** * CLASS LAUNCHER * * Fenêtre de configuration du jeu préalablement au lancement d'une partie * * @author François Autin * */ package launcher; import gameplay.match.*; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.ChoiceBox; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.VBox; import javafx.scene.control.CheckBox; import javafx.stage.Stage; import javafx.stage.StageStyle; import javafx.fxml.*; import java.util.HashMap; import java.util.Map; @SuppressWarnings("unchecked") public class Launcher extends Application { public static Launcher pointer; private static Settings setter; private HashMap arraysettings; private static Map namespace; public Launcher() { pointer = this; try { setter = new Settings(); } catch (Exception e) { e.printStackTrace(); System.exit(1); } arraysettings = new HashMap(); } /* * Start method is used by Launcher as an implementation of the Application class to create a JavaFX thread to display the GUI window */ public void start(Stage primaryStage) throws Exception { FXMLLoader loader = new FXMLLoader(getClass().getResource("launcher.fxml")); Parent root = loader.load(); Scene main = new Scene(root); namespace = loader.getNamespace(); ChoiceBox cb = (ChoiceBox) namespace.get("resolution"); ObservableList availableres = FXCollections.observableArrayList("640x480", "800x600", "1024x768", "1280x720", "1366x768", "1600x900", "1920x1080"); cb.setItems(availableres); if (!availableres.contains(setter.getResolution())) { cb.setValue("640x480"); } else { cb.setValue(setter.getResolution()); } CheckBox fs = (CheckBox) namespace.get("fullscreen"); if(setter.getFullscreen()) { fs.setSelected(true); } else { fs.setSelected(false); } VBox v1 = (VBox) namespace.get("p1"); ChoiceBox b1 = (ChoiceBox) v1.getChildren().get(1); VBox v2 = (VBox) namespace.get("p2"); ChoiceBox b2 = (ChoiceBox) v2.getChildren().get(1); ObservableList availablechar = FXCollections.observableArrayList("Blue"); b1.setItems(availablechar); b2.setItems(availablechar); if(setter.getChar1().equals("blue")) { b1.setValue("Blue"); } if(setter.getChar2().equals("blue")) { b2.setValue("Blue"); } primaryStage.initStyle(StageStyle.UNDECORATED); primaryStage.setTitle("Boulevard Combattant"); primaryStage.setScene(main); primaryStage.show(); } @FXML public void runGame() { try { int width, height; ChoiceBox cb = (ChoiceBox) namespace.get("resolution"); switch (cb.getValue()) { case "640x480": width = 640; height = 480; break; case "800x600": width = 800; height = 600; break; case "1024x768": width = 1024; height = 768; break; case "1280x720": width = 1280; height = 720; break; case "1366x768": width = 1366; height = 768; break; case "1600x900": width = 1600; height = 900; break; case "1920x1080": width = 1920; height = 1080; break; default: width = 640; height = 480; break; } pointer.arraysettings.put("width", width); pointer.arraysettings.put("height", height); CheckBox fs = (CheckBox) namespace.get("fullscreen"); pointer.arraysettings.put("fullscreen", fs.isSelected()); pointer.arraysettings.put("rounds", 3); VBox vp1 = (VBox) namespace.get("p1"); ChoiceBox p1 = (ChoiceBox) vp1.getChildren().get(1); pointer.arraysettings.put("character1", p1.getValue().toLowerCase()); VBox vp2 = (VBox) namespace.get("p2"); ChoiceBox p2 = (ChoiceBox) vp2.getChildren().get(1); pointer.arraysettings.put("character2", p2.getValue().toLowerCase()); pointer.arraysettings.put("stage", "default"); setter.setSettings(); match.main(null); } catch (Exception e) { e.printStackTrace(); System.exit(1); } } @FXML public void launch() { this.runGame(); } @FXML public void quit() { System.exit(0); } @FXML public void website() { getHostServices().showDocument("https://gitlab.istic.univ-rennes1.fr/fautin/jeu-de-combat"); } @FXML public void chp1() { VBox v1 = (VBox) namespace.get("p1"); ImageView iv1 = (ImageView) v1.getChildren().get(0); ChoiceBox b1 = (ChoiceBox) v1.getChildren().get(1); switch (b1.getValue()) { case "Blue": iv1.setImage(new Image("/launcher/charfaces/blue.png")); break; default: iv1.setImage(new Image("/launcher/default.png")); break; } } @FXML public void chp2() { VBox v1 = (VBox) namespace.get("p2"); ImageView iv1 = (ImageView) v1.getChildren().get(0); ChoiceBox b1 = (ChoiceBox) v1.getChildren().get(1); switch (b1.getValue()) { case "Blue": iv1.setImage(new Image("/launcher/charfaces/blue.png")); break; default: iv1.setImage(new Image("/launcher/default.png")); break; } } public HashMap getArraysettings() { return arraysettings; } }