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