From 094538f2d42e6e5d9a7cc7be8196396b4c699885 Mon Sep 17 00:00:00 2001 From: arnaudlabourel <arnaud.labourel@univ-amu.fr> Date: Fri, 1 Oct 2021 11:30:07 +0200 Subject: [PATCH] Changed configuration such that the size of the grid and the dimension of tiles is defined in the fxml file. --- ...ontroller.java => MainPaneController.java} | 2 +- src/main/java/main/MainApp.java | 12 +++---- src/main/java/view/GridTileCanvas.java | 31 ++++++++++++------- src/main/resources/view/GridCanvas.fxml | 29 +++++++++++++++++ src/main/resources/view/RootLayout.fxml | 18 ----------- 5 files changed, 55 insertions(+), 37 deletions(-) rename src/main/java/controller/{RootLayoutController.java => MainPaneController.java} (91%) create mode 100644 src/main/resources/view/GridCanvas.fxml delete mode 100644 src/main/resources/view/RootLayout.fxml diff --git a/src/main/java/controller/RootLayoutController.java b/src/main/java/controller/MainPaneController.java similarity index 91% rename from src/main/java/controller/RootLayoutController.java rename to src/main/java/controller/MainPaneController.java index 581c7ac..6e5f3b1 100644 --- a/src/main/java/controller/RootLayoutController.java +++ b/src/main/java/controller/MainPaneController.java @@ -4,7 +4,7 @@ import javafx.fxml.FXML; import main.MainApp; import view.GridTileCanvas; -public class RootLayoutController { +public class MainPaneController { @FXML public GridTileCanvas GridTileCanvas; diff --git a/src/main/java/main/MainApp.java b/src/main/java/main/MainApp.java index 0cd077e..7c512e2 100644 --- a/src/main/java/main/MainApp.java +++ b/src/main/java/main/MainApp.java @@ -1,21 +1,19 @@ package main; -import controller.RootLayoutController; +import controller.MainPaneController; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; -import javafx.scene.layout.BorderPane; +import javafx.scene.layout.AnchorPane; import javafx.stage.Stage; -import model.TileGrid; -import model.Tile; import model.TileGame; import java.io.IOException; public class MainApp extends Application { private Stage primaryStage; - private BorderPane rootLayout; + private AnchorPane rootLayout; private TileGame tileGame = new TileGame(); @@ -35,7 +33,7 @@ public class MainApp extends Application { public void initRootLayout() { try { // Load root layout from fxml file. - FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/RootLayout.fxml")); + FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/GridCanvas.fxml")); rootLayout = loader.load(); // Show the scene containing the root layout. @@ -43,7 +41,7 @@ public class MainApp extends Application { primaryStage.setScene(scene); // Give the controller access to the main app. - RootLayoutController controller = loader.getController(); + MainPaneController controller = loader.getController(); controller.setMainApp(this); primaryStage.show(); diff --git a/src/main/java/view/GridTileCanvas.java b/src/main/java/view/GridTileCanvas.java index 5133394..c93b6af 100644 --- a/src/main/java/view/GridTileCanvas.java +++ b/src/main/java/view/GridTileCanvas.java @@ -1,5 +1,6 @@ package view; +import javafx.beans.NamedArg; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.paint.Color; @@ -10,15 +11,23 @@ import java.util.List; import java.util.Random; public class GridTileCanvas extends Canvas { - private static final double TILE_WIDTH = 50; - private static final double TILE_HEIGHT = 50; - private static final int NUMBER_OF_ROWS = 20; - private static final int NUMBER_OF_COLUMNS = 20; - - public GridTileCanvas() { - this.setWidth(TILE_WIDTH * NUMBER_OF_COLUMNS); - this.setHeight(TILE_HEIGHT * NUMBER_OF_ROWS); - TileGrid tileGrid = new TileGrid(NUMBER_OF_ROWS, NUMBER_OF_COLUMNS); + + public final double tileWidth; + private final double tileHeight; + private final Integer numberOfColumns; + private final Integer numberOfRows; + + public GridTileCanvas(@NamedArg("tileWidth") Double tileWidth, + @NamedArg("tileHeight") Double tileHeight, + @NamedArg("numberOfColumns") Integer numberOfColumns, + @NamedArg("numberOfRows") Integer numberOfRows) { + this.tileWidth = tileWidth; + this.tileHeight = tileHeight; + this.numberOfColumns = numberOfColumns; + this.numberOfRows = numberOfRows; + this.setWidth(tileWidth * numberOfColumns); + this.setHeight(tileHeight * numberOfRows); + TileGrid tileGrid = new TileGrid(numberOfRows, numberOfColumns); tileGrid.fillWithRandomTiles(List.of(Color.BLUE, Color.GREEN, Color.BLACK, Color.RED), new Random()); drawGridTile(tileGrid); } @@ -37,10 +46,10 @@ public class GridTileCanvas extends Canvas { } private double getXPosition(int column, PointType pointType){ - return (column + pointType.getXPosition()) * TILE_WIDTH; + return (column + pointType.getXPosition()) * tileWidth; } private double getYPosition(int row, PointType pointType){ - return (row + pointType.getYPosition()) * TILE_HEIGHT; + return (row + pointType.getYPosition()) * tileHeight; } private void drawTriangle(int row, int column, CardinalDirection side, Color color){ diff --git a/src/main/resources/view/GridCanvas.fxml b/src/main/resources/view/GridCanvas.fxml new file mode 100644 index 0000000..f546bb1 --- /dev/null +++ b/src/main/resources/view/GridCanvas.fxml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.layout.*?> + + +<?import view.GridTileCanvas?> +<?import java.lang.Double?> +<?import java.lang.Integer?> +<AnchorPane stylesheets="@DarkTheme.css" + xmlns="http://javafx.com/javafx" + xmlns:fx="http://javafx.com/fxml" + fx:controller="controller.MainPaneController"> + <GridTileCanvas xmlns="http://javafx.com/javafx" + xmlns:fx="http://javafx.com/fxml" + fx:id="GridTileCanvas"> + <tileHeight> + <Double fx:value="5"/> + </tileHeight> + <tileWidth> + <Double fx:value="5"/> + </tileWidth> + <numberOfColumns> + <Integer fx:value="100"/> + </numberOfColumns> + <numberOfRows> + <Integer fx:value="100"/> + </numberOfRows> + </GridTileCanvas> +</AnchorPane> \ No newline at end of file diff --git a/src/main/resources/view/RootLayout.fxml b/src/main/resources/view/RootLayout.fxml deleted file mode 100644 index 5e42c1c..0000000 --- a/src/main/resources/view/RootLayout.fxml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.scene.layout.*?> - - -<?import view.GridTileCanvas?> -<BorderPane prefHeight="900.0" - prefWidth="900.0" - stylesheets="@DarkTheme.css" - xmlns="http://javafx.com/javafx" - xmlns:fx="http://javafx.com/fxml" - fx:controller="controller.RootLayoutController"> - <GridTileCanvas xmlns="http://javafx.com/javafx" - xmlns:fx="http://javafx.com/fxml" - fx:id="GridTileCanvas" - height="1000.0" width="1000.0"> - </GridTileCanvas> -</BorderPane> \ No newline at end of file -- GitLab