From 15bcbac0b7f35bca41834e28f99bcb5476fcd8d5 Mon Sep 17 00:00:00 2001
From: Celia AREZKI <celia.arezki.1@etu.univ-amu.fr>
Date: Sun, 17 Nov 2024 22:20:24 +0100
Subject: [PATCH] Modify the methode updateFires and updateFireFighters

---
 src/main/java/model/FireManager.java        | 13 ++++++++++---
 src/main/java/model/FirefighterBoard.java   |  5 +++--
 src/main/java/model/FirefighterManager.java | 14 ++++++++++----
 3 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/src/main/java/model/FireManager.java b/src/main/java/model/FireManager.java
index 71d9659..0ffd5df 100644
--- a/src/main/java/model/FireManager.java
+++ b/src/main/java/model/FireManager.java
@@ -6,9 +6,12 @@ import java.util.*;
 
 public class FireManager implements FireBehavior, FireProperties{
     private Set<Position> firePositions;
+    private FirefighterManager firefighterManager;
 
-    public FireManager(Set<Position> firePositions) {
+    public FireManager(Set<Position> firePositions,FirefighterManager firefighterManager) {
         this.firePositions = firePositions;
+        this.firefighterManager=firefighterManager;
+
     }
     // Initialize fire positions randomly
 
@@ -22,10 +25,11 @@ public class FireManager implements FireBehavior, FireProperties{
     @Override
     public List<Position> updateFires(int step, Map<Position, List<Position>> neighbors) {
         List<Position> newFirePositions = new ArrayList<>();
-        if (step % 2 == 0) { // Fires spread every other step
+        if (step % 2 == 0) { // Le feu se propage tous les deux pas
             for (Position fire : firePositions) {
                 for (Position neighbor : neighbors.get(fire)) {
-                    if (!firePositions.contains(neighbor)) {
+                    // Vérifier si le voisin est déjà en feu ou s'il y a un pompier
+                    if (!firePositions.contains(neighbor) && !firefighterManager.getFirefighterPositions().contains(neighbor)) {
                         newFirePositions.add(neighbor);
                     }
                 }
@@ -34,6 +38,8 @@ public class FireManager implements FireBehavior, FireProperties{
         }
         return newFirePositions;
     }
+
+
     // Extinguish a fire at a specific position
     @Override
     public void extinguishFire(Position position) {
@@ -47,4 +53,5 @@ public class FireManager implements FireBehavior, FireProperties{
     @Override
     public Set<Position> getFirePosition()
     {  return new HashSet<>(firePositions);}
+
 }
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index 4f5681f..e195363 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -28,8 +28,9 @@ public class FirefighterBoard  implements BoardBehavior<List<ModelElement>> ,Boa
     initializePositions();
     initializeNeighbors();
     // Initialize manager
-    this.fireManager = new FireManager(new HashSet<>());
-    this.firefighterManager = new FirefighterManager(new ArrayList<>(), fireManager);
+    this.fireManager = new FireManager(new HashSet<>(),new FirefighterManager(new ArrayList<>()));
+    this.firefighterManager = new FirefighterManager(new ArrayList<>());
+    this.firefighterManager.setFireManager(fireManager);
 
     initializeElements();
   }
diff --git a/src/main/java/model/FirefighterManager.java b/src/main/java/model/FirefighterManager.java
index 3866183..9cce634 100644
--- a/src/main/java/model/FirefighterManager.java
+++ b/src/main/java/model/FirefighterManager.java
@@ -12,9 +12,12 @@ public class FirefighterManager implements FirefighterBehavior, FirefighterPrope
     private List<Position> firefighterPositions;
     FireManager fireManager;
 
-    public FirefighterManager(List<Position> firefighterPositions, FireManager fireManager) {
+    public void setFireManager(FireManager fireManager) {
+        this.fireManager = fireManager;
+    }
+
+    public FirefighterManager(List<Position> firefighterPositions) {
         this.firefighterPositions = firefighterPositions;
-        this.fireManager=fireManager;
     }
 
     @Override
@@ -48,8 +51,10 @@ public class FirefighterManager implements FirefighterBehavior, FirefighterPrope
             Position newFirefighterPosition = moveToTarget(firefighterPosition, fireManager.getFirePosition(), neighbors);
             setFirefighterPosition(firefighterPosition, newFirefighterPosition);
 
-            // Extinction du feu
-            extinguishFire(newFirefighterPosition);
+            // Vérifier si un feu est à la nouvelle position et l'éteindre
+            if (fireManager.isOnFire(newFirefighterPosition)) {
+                extinguishFire(newFirefighterPosition);
+            }
 
             modifiedPositions.add(firefighterPosition);
             modifiedPositions.add(newFirefighterPosition);
@@ -57,4 +62,5 @@ public class FirefighterManager implements FirefighterBehavior, FirefighterPrope
 
         return modifiedPositions;
     }
+
 }
-- 
GitLab