From 08b31d98abb3cd97babbd77689e4e8b7354a1346 Mon Sep 17 00:00:00 2001 From: Yanis O <oualanyanis01@gmail.com> Date: Wed, 13 Nov 2024 12:58:31 +0100 Subject: [PATCH] [Modif] Changement de la logique de la vue et du controller --- src/main/java/controller/Controller.java | 35 ++++++++++-------------- src/main/java/view/FirefighterGrid.java | 2 +- src/main/java/view/ViewElement.java | 16 +++++++---- 3 files changed, 26 insertions(+), 27 deletions(-) diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index 2a60897..2450bf5 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -1,5 +1,10 @@ package controller; +import static java.util.Objects.*; + +import java.util.ArrayList; +import java.util.List; + import javafx.animation.Animation; import javafx.animation.KeyFrame; import javafx.animation.Timeline; @@ -13,17 +18,12 @@ import javafx.scene.control.ToggleGroup; import javafx.util.Duration; import javafx.util.Pair; import model.Board; -import model.ModelElement; -import model.FirefighterBoard; +import model.Entity; +import model.FireFighterScenario; import util.Position; import view.Grid; import view.ViewElement; -import java.util.ArrayList; -import java.util.List; - -import static java.util.Objects.requireNonNull; - public class Controller { public static final int PERIOD_IN_MILLISECONDS = 50; @@ -40,7 +40,7 @@ public class Controller { @FXML private Grid<ViewElement> grid; private Timeline timeline; - private Board<List<ModelElement>> board; + private Board<Entity> board; @FXML private void initialize() { @@ -54,15 +54,15 @@ public class Controller { pauseToggleButton.setSelected(true); } - private void setModel(FirefighterBoard firefighterBoard) { - this.board = requireNonNull(firefighterBoard, "firefighter.model is null"); + private void setModel(Board<Entity> board) { + this.board = requireNonNull(board, "board is null"); } private void updateBoard(){ List<Position> updatedPositions = board.updateToNextGeneration(); List<Pair<Position, ViewElement>> updatedSquares = new ArrayList<>(); for(Position updatedPosition : updatedPositions){ - List<ModelElement> squareState = board.getState(updatedPosition); + Entity squareState = board.getState(updatedPosition); ViewElement viewElement = getViewElement(squareState); updatedSquares.add(new Pair<>(updatedPosition, viewElement)); } @@ -74,6 +74,7 @@ public class Controller { int columnCount = board.columnCount(); int rowCount = board.rowCount(); ViewElement[][] viewElements = new ViewElement[rowCount][columnCount]; + System.out.println("columnsCOunt : " + columnCount + " rowCount : " + rowCount); for(int column = 0; column < columnCount; column++) for(int row = 0; row < rowCount; row++) viewElements[row][column] = getViewElement(board.getState(new Position(row, column))); @@ -81,14 +82,8 @@ public class Controller { updateGenerationLabel(board.stepNumber()); } - private ViewElement getViewElement(List<ModelElement> squareState) { - if(squareState.contains(ModelElement.FIREFIGHTER)){ - return ViewElement.FIREFIGHTER; - } - if (squareState.contains(ModelElement.FIRE)){ - return ViewElement.FIRE; - } - return ViewElement.EMPTY; + private ViewElement getViewElement(Entity entity) { + return new ViewElement(entity.getViewColor()); } private void initializeTimeline() { @@ -126,7 +121,7 @@ public class Controller { public void initialize(int squareWidth, int squareHeight, int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount) { grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); - this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount)); + this.setModel(new FireFighterScenario(columnCount, rowCount, initialFireCount, initialFirefighterCount)); repaintGrid(); } diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java index 39c7075..ecc8129 100644 --- a/src/main/java/view/FirefighterGrid.java +++ b/src/main/java/view/FirefighterGrid.java @@ -10,7 +10,7 @@ import util.Position; public class FirefighterGrid extends Canvas implements Grid<ViewElement>{ private void paintElementAtPosition(ViewElement element, Position position) { - paintBox(position.x(), position.y(), element.color); + paintBox(position.x(), position.y(), element.getColor()); } private int boxWidth; private int boxHeight; diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java index ffb7611..5043644 100644 --- a/src/main/java/view/ViewElement.java +++ b/src/main/java/view/ViewElement.java @@ -2,10 +2,14 @@ package view; import javafx.scene.paint.Color; -public enum ViewElement { - FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE); - final Color color; - ViewElement(Color color) { - this.color = color; - } +public class ViewElement { + private final Color color; + + public ViewElement(Color color) { + this.color = color; + } + + public Color getColor() { + return color; + } } -- GitLab