From ba0e18b9b111653ce7b48ef954172de29e929dbb Mon Sep 17 00:00:00 2001
From: Celia AREZKI <celia.arezki.1@etu.univ-amu.fr>
Date: Sun, 17 Nov 2024 20:59:01 +0100
Subject: [PATCH] FirefighterManager : add the methode updateFireFighters

---
 src/main/java/model/FirefighterBehavior.java |  1 +
 src/main/java/model/FirefighterBoard.java    |  6 +++---
 src/main/java/model/FirefighterManager.java  | 20 ++++++++++++++++++++
 3 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/src/main/java/model/FirefighterBehavior.java b/src/main/java/model/FirefighterBehavior.java
index 64b515a..e00287d 100644
--- a/src/main/java/model/FirefighterBehavior.java
+++ b/src/main/java/model/FirefighterBehavior.java
@@ -10,4 +10,5 @@ public interface FirefighterBehavior {
     Position moveToTarget(Position currentPosition, Collection<Position> firePositions,
                           Map<Position, List<Position>> neighbors); // Déplacer un pompier vers une cible.
     void extinguishFire(Position firePosition); // Éteindre un feu à une position donnée.
+    public List<Position> updateFirefighters(int step, Map<Position, List<Position>> neighbors)
 }
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index bf5d053..efc1d04 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -96,12 +96,12 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     return columnCount;
   }
 
-  public List<Position> updateToNextGeneration() {
+  /*public List<Position> updateToNextGeneration() {
     List<Position> modifiedPositions = updateFirefighters();
     modifiedPositions.addAll(updateFires());
     step++;
     return modifiedPositions;
-  }
+  }*/
 
   private List<Position> updateFires() {
    return fireManager.updateFires(step,neighbors);
@@ -113,7 +113,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
     return step;
   }
 
- /* private List<Position> updateFirefighters() {
+ /*private List<Position> updateFirefighters() {
     List<Position> modifiedPosition = new ArrayList<>();
     List<Position> firefighterNewPositions = new ArrayList<>();
     for (Position firefighterPosition : firefighterPositions) {
diff --git a/src/main/java/model/FirefighterManager.java b/src/main/java/model/FirefighterManager.java
index e141d20..3866183 100644
--- a/src/main/java/model/FirefighterManager.java
+++ b/src/main/java/model/FirefighterManager.java
@@ -3,6 +3,7 @@ package model;
 import util.Position;
 import util.TargetStrategy;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -37,4 +38,23 @@ public class FirefighterManager implements FirefighterBehavior, FirefighterPrope
         firefighterPositions.remove(oldPosition);
         firefighterPositions.add(newPosition);
     }
+    @Override
+    public List<Position> updateFirefighters(int step, Map<Position, List<Position>> neighbors) {
+        List<Position> modifiedPositions = new ArrayList<>();
+        List<Position> firefighterPositionsCopy = new ArrayList<>(firefighterPositions);
+
+        for (Position firefighterPosition : firefighterPositionsCopy) {
+            // Déplacement des pompiers
+            Position newFirefighterPosition = moveToTarget(firefighterPosition, fireManager.getFirePosition(), neighbors);
+            setFirefighterPosition(firefighterPosition, newFirefighterPosition);
+
+            // Extinction du feu
+            extinguishFire(newFirefighterPosition);
+
+            modifiedPositions.add(firefighterPosition);
+            modifiedPositions.add(newFirefighterPosition);
+        }
+
+        return modifiedPositions;
+    }
 }
-- 
GitLab