From 3d1739f66ebf4e468d32ed83128ed699ca0af76f Mon Sep 17 00:00:00 2001
From: ousseyn01 <ousseyn.ndiaye9@gmail.com>
Date: Fri, 29 Nov 2024 22:36:29 +0100
Subject: [PATCH] For Route and Rocaille

---
 src/main/java/controller/Controller.java      |  6 +++++
 src/main/java/model/FirefighterBoard.java     | 27 +++++++++++++++++++
 src/main/java/model/ModelElement.java         |  2 +-
 src/main/java/model/Mountain.java             |  1 -
 .../model/update/NextGenerationUpdater.java   |  9 +++----
 src/main/java/view/ViewElement.java           |  2 +-
 6 files changed, 39 insertions(+), 8 deletions(-)

diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index c202d04..747de6c 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -94,6 +94,12 @@ public class Controller {
     if(squareState.contains(ModelElement.MOUNTAIN)){
       return ViewElement.MOUNTAIN;
     }
+    if(squareState.contains(ModelElement.ROUTE)){
+      return ViewElement.ROUTE;
+    }
+    if(squareState.contains(ModelElement.ROCAILLE)){
+      return ViewElement.ROCAILLE;
+    }
     return ViewElement.EMPTY;
   }
 
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index dadc043..7c1960c 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -23,6 +23,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
   private final Random randomGenerator = new Random();
 
   private NextGenerationUpdater nextGenerationUpdater;
+  private List<TerrainElement> terrainElements;
+
 
 
   public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudCount, int initialMountainCount) {
@@ -48,6 +50,17 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
 
     // Initialisation des Updaters
     nextGenerationUpdater = new NextGenerationUpdater(fire, clouds, firefighters, mountains, neighbors);
+
+    terrainElements = new ArrayList<>();
+    for (int i = 0; i < 5; i++) {
+      Position position = randomPosition();
+      terrainElements.add(new Route(position));
+    }
+
+    for (int i = 0; i < 5; i++) {
+      Position position = randomPosition();
+      terrainElements.add(new Rocaille(position));
+    }
   }
 
   public void initializeElements() {
@@ -55,6 +68,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     clouds = new ArrayList<>();
     mountains = new ArrayList<>();
     Set<Position> firePositions = new HashSet<>();
+
+
     for (int index = 0; index < initialCloudCount; index++) {
       clouds.add(new Cloud(randomPosition(), neighbors));
     }
@@ -112,6 +127,16 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
 
     if (fire.getFirePositions().contains(position))
       result.add(ModelElement.FIRE);
+
+    for (TerrainElement element : terrainElements) {
+      if (element.getPosition().equals(position)) {
+        if (element instanceof Route) {
+          result.add(ModelElement.ROUTE);
+        } else if (element instanceof Rocaille) {
+          result.add(ModelElement.ROCAILLE);
+        }
+      }
+    }
     return result;
   }
 
@@ -151,6 +176,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
         case FIREFIGHTER -> firefighters.add(new Firefighter(position));
         case CLOUD -> clouds.add(new Cloud(position, neighbors));
         case MOUNTAIN -> mountains.add(new Mountain(position));
+        case ROUTE -> terrainElements.add(new Route(position));
+        case ROCAILLE -> terrainElements.add(new Rocaille(position));
       }
     }
   }
diff --git a/src/main/java/model/ModelElement.java b/src/main/java/model/ModelElement.java
index 632bfad..9019ce2 100644
--- a/src/main/java/model/ModelElement.java
+++ b/src/main/java/model/ModelElement.java
@@ -1,5 +1,5 @@
 package model;
 
 public enum ModelElement {
-  FIREFIGHTER, FIRE, CLOUD, MOUNTAIN
+  FIREFIGHTER, FIRE, CLOUD, MOUNTAIN, ROUTE, ROCAILLE
 }
diff --git a/src/main/java/model/Mountain.java b/src/main/java/model/Mountain.java
index 74ede00..644faf3 100644
--- a/src/main/java/model/Mountain.java
+++ b/src/main/java/model/Mountain.java
@@ -2,7 +2,6 @@ package model;
 
 import util.Position;
 
-import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
diff --git a/src/main/java/model/update/NextGenerationUpdater.java b/src/main/java/model/update/NextGenerationUpdater.java
index 72de8c2..0d3c77f 100644
--- a/src/main/java/model/update/NextGenerationUpdater.java
+++ b/src/main/java/model/update/NextGenerationUpdater.java
@@ -1,9 +1,6 @@
 package model.update;
 
-import model.Cloud;
-import model.Fire;
-import model.Firefighter;
-import model.Mountain;
+import model.*;
 import util.Position;
 
 import java.util.List;
@@ -17,7 +14,8 @@ public class NextGenerationUpdater {
     private final Map<Position, List<Position>> neighbors;
     private int step;
 
-    public NextGenerationUpdater(Fire fire, List<Cloud> clouds, List<Firefighter> firefighters, List<Mountain> mountains, Map<Position, List<Position>> neighbors) {
+    public NextGenerationUpdater(Fire fire, List<Cloud> clouds, List<Firefighter> firefighters, List<Mountain> mountains,
+                                 Map<Position, List<Position>> neighbors) {
         this.fire = fire;
         this.clouds = clouds;
         this.firefighters = firefighters;
@@ -34,6 +32,7 @@ public class NextGenerationUpdater {
             modifiedPositions.addAll(fire.spreadFire(Mountain.getMountainPositions(mountains)));
         }
 
+        // Gestion des nuages
         for (Cloud cloud : clouds) {
             cloud.move();
             cloud.protectFromFire(fire);
diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java
index 733d916..9df8590 100644
--- a/src/main/java/view/ViewElement.java
+++ b/src/main/java/view/ViewElement.java
@@ -3,7 +3,7 @@ package view;
 import javafx.scene.paint.Color;
 
 public enum ViewElement {
-  FIREFIGHTER(Color.BLUE), FIRE(Color.RED), CLOUD(Color.LIGHTGREY),MOUNTAIN(Color.CHOCOLATE), EMPTY(Color.WHITE);
+  FIREFIGHTER(Color.BLUE), FIRE(Color.RED), CLOUD(Color.LIGHTGREY),MOUNTAIN(Color.CHOCOLATE),ROUTE(Color.BLACK), ROCAILLE(Color.MAROON), EMPTY(Color.WHITE);
   final Color color;
   ViewElement(Color color) {
     this.color = color;
-- 
GitLab