From 16c08852e4d5a5d55b3c057ec1205b4c774404b3 Mon Sep 17 00:00:00 2001 From: ousseyn01 <ousseyn.ndiaye9@gmail.com> Date: Fri, 29 Nov 2024 21:23:29 +0100 Subject: [PATCH] NextGenerationUpdater is CREATED and DONE in update package --- .../model/update/NextGenerationUpdater.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/main/java/model/update/NextGenerationUpdater.java diff --git a/src/main/java/model/update/NextGenerationUpdater.java b/src/main/java/model/update/NextGenerationUpdater.java new file mode 100644 index 0000000..72de8c2 --- /dev/null +++ b/src/main/java/model/update/NextGenerationUpdater.java @@ -0,0 +1,50 @@ +package model.update; + +import model.Cloud; +import model.Fire; +import model.Firefighter; +import model.Mountain; +import util.Position; + +import java.util.List; +import java.util.Map; + +public class NextGenerationUpdater { + private final Fire fire; + private final List<Cloud> clouds; + private final List<Firefighter> firefighters; + private final List<Mountain> mountains; + 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) { + this.fire = fire; + this.clouds = clouds; + this.firefighters = firefighters; + this.mountains = mountains; + this.neighbors = neighbors; + this.step = 0; + } + + public List<Position> updateToNextGeneration() { + FirefighterUpdater firefighterUpdater = new FirefighterUpdater(firefighters, neighbors, fire); + List<Position> modifiedPositions = firefighterUpdater.updateFirefighters(Mountain.getMountainPositions(mountains)); + + if (step % 2 == 0) { + modifiedPositions.addAll(fire.spreadFire(Mountain.getMountainPositions(mountains))); + } + + for (Cloud cloud : clouds) { + cloud.move(); + cloud.protectFromFire(fire); + cloud.extinguishSurroundingFires(fire); + } + + step++; + return modifiedPositions; + } + + public void resetStep() { + this.step = 0; + } +} -- GitLab