From 01c34783aee23b7a57b990231211ec29b3219fd1 Mon Sep 17 00:00:00 2001
From: ousseyn01 <ousseyn.ndiaye9@gmail.com>
Date: Wed, 27 Nov 2024 13:10:06 +0100
Subject: [PATCH] Modification of Cloud because fire could delete Cloud

---
 src/main/java/model/Cloud.java            | 27 +++++++++--------------
 src/main/java/model/FirefighterBoard.java |  4 +++-
 2 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/src/main/java/model/Cloud.java b/src/main/java/model/Cloud.java
index 6e33768..208894d 100644
--- a/src/main/java/model/Cloud.java
+++ b/src/main/java/model/Cloud.java
@@ -14,32 +14,27 @@ public class Cloud {
         this.neighbors = neighbors;
     }
 
-    // Déplacement du nuage d'une case aléatoire parmi ses voisins
-    public void move(Fire fire, Set<Position> mountains) {
-        List<Position> validNeighbors = neighbors.get(position).stream()
-                .filter(neighbor -> !mountains.contains(neighbor)) // Exclure les montagnes
-                .toList();
-
+    // Déplacement aléatoire du nuage
+    public void move() {
+        List<Position> validNeighbors = neighbors.get(position);
         if (!validNeighbors.isEmpty()) {
             this.position = validNeighbors.get(randomGenerator.nextInt(validNeighbors.size()));
         }
-
-        // Éteindre les feux après déplacement
-        extinguishFires(fire);
     }
 
-    // Éteint les feux sur la position du nuage et ses voisins
-    private void extinguishFires(Fire fire) {
-        // Éteindre le feu à la position actuelle
-        fire.extinguishFire(position);
-
-        // Éteindre les feux voisins
+    // Éteindre les feux dans les cases adjacentes
+    public void extinguishSurroundingFires(Fire fire) {
         for (Position neighbor : neighbors.get(position)) {
-            fire.extinguishFire(neighbor);
+            fire.extinguishFire(neighbor); // Éteint les feux adjacents
         }
     }
 
     public Position getPosition() {
         return position;
     }
+
+    // Les nuages ne peuvent pas être supprimés par le feu
+    public void protectFromFire(Fire fire) {
+        fire.getFirePositions().remove(position);
+    }
 }
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index e684c39..7aef60a 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -127,7 +127,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     for (Cloud cloud : clouds) {
       //cloud.moveAndExtinguishFire(fire);
       //cloud.extinguishFireCloud(fire);
-      cloud.move(fire, getMountainPositions());
+      cloud.move();
+      cloud.protectFromFire(fire);
+      cloud.extinguishSurroundingFires(fire);
     }
     step++;
 
-- 
GitLab