From eb9dd7fb6c68f9f1463fe032a48a9f53b070711e Mon Sep 17 00:00:00 2001
From: ousseyn01 <ousseyn.ndiaye9@gmail.com>
Date: Fri, 29 Nov 2024 21:22:51 +0100
Subject: [PATCH] FirefighterBoard.java is CREATED and DONE in update package

---
 .../java/model/update/FirefighterUpdater.java | 49 +++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 src/main/java/model/update/FirefighterUpdater.java

diff --git a/src/main/java/model/update/FirefighterUpdater.java b/src/main/java/model/update/FirefighterUpdater.java
new file mode 100644
index 0000000..7456a8e
--- /dev/null
+++ b/src/main/java/model/update/FirefighterUpdater.java
@@ -0,0 +1,49 @@
+package model.update;
+
+import model.Fire;
+import model.Firefighter;
+import util.Position;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class FirefighterUpdater {
+    private final List<Firefighter> firefighters;
+    private final Map<Position, List<Position>> neighbors;
+    private final Fire fire;
+
+    public FirefighterUpdater(List<Firefighter> firefighters, Map<Position, List<Position>> neighbors, Fire fire) {
+        this.firefighters = firefighters;
+        this.neighbors = neighbors;
+        this.fire = fire;
+    }
+
+    public List<Position> updateFirefighters(Set<Position> mountainPositions) {
+        List<Position> modifiedPositions = new ArrayList<>();
+
+        for (Firefighter firefighter : firefighters) {
+            modifiedPositions.add(firefighter.getPosition());
+
+            Position newPosition = firefighter.moveToBestPosition(fire.getFirePositions(), neighbors, mountainPositions);
+            firefighter.setPosition(newPosition);
+
+            modifiedPositions.add(newPosition);
+
+            firefighter.extinguish(newPosition, fire.getFirePositions());
+
+            // Éteindre les feux dans les positions voisines
+            List<Position> adjacentFires = neighbors.get(newPosition).stream()
+                    .filter(fire.getFirePositions()::contains)
+                    .toList();
+
+            for (Position firePosition : adjacentFires) {
+                firefighter.extinguish(firePosition, fire.getFirePositions());
+                modifiedPositions.add(firePosition);
+            }
+        }
+
+        return modifiedPositions;
+    }
+}
-- 
GitLab