diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index c202d042071b0a9e5c3dca9b85edd2a338c55005..747de6cb17ce5e6ffdd45167b412ded53f91f94e 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -94,6 +94,12 @@ public class Controller { if(squareState.contains(ModelElement.MOUNTAIN)){ return ViewElement.MOUNTAIN; } + if(squareState.contains(ModelElement.ROUTE)){ + return ViewElement.ROUTE; + } + if(squareState.contains(ModelElement.ROCAILLE)){ + return ViewElement.ROCAILLE; + } return ViewElement.EMPTY; } diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index dadc043a04ba1fc223a6715cf932e5db1be1fc65..7c1960c76b002008d2c45118e3fcbf3a9497bb9b 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -23,6 +23,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> { private final Random randomGenerator = new Random(); private NextGenerationUpdater nextGenerationUpdater; + private List<TerrainElement> terrainElements; + public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudCount, int initialMountainCount) { @@ -48,6 +50,17 @@ public class FirefighterBoard implements Board<List<ModelElement>> { // Initialisation des Updaters nextGenerationUpdater = new NextGenerationUpdater(fire, clouds, firefighters, mountains, neighbors); + + terrainElements = new ArrayList<>(); + for (int i = 0; i < 5; i++) { + Position position = randomPosition(); + terrainElements.add(new Route(position)); + } + + for (int i = 0; i < 5; i++) { + Position position = randomPosition(); + terrainElements.add(new Rocaille(position)); + } } public void initializeElements() { @@ -55,6 +68,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> { clouds = new ArrayList<>(); mountains = new ArrayList<>(); Set<Position> firePositions = new HashSet<>(); + + for (int index = 0; index < initialCloudCount; index++) { clouds.add(new Cloud(randomPosition(), neighbors)); } @@ -112,6 +127,16 @@ public class FirefighterBoard implements Board<List<ModelElement>> { if (fire.getFirePositions().contains(position)) result.add(ModelElement.FIRE); + + for (TerrainElement element : terrainElements) { + if (element.getPosition().equals(position)) { + if (element instanceof Route) { + result.add(ModelElement.ROUTE); + } else if (element instanceof Rocaille) { + result.add(ModelElement.ROCAILLE); + } + } + } return result; } @@ -151,6 +176,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> { case FIREFIGHTER -> firefighters.add(new Firefighter(position)); case CLOUD -> clouds.add(new Cloud(position, neighbors)); case MOUNTAIN -> mountains.add(new Mountain(position)); + case ROUTE -> terrainElements.add(new Route(position)); + case ROCAILLE -> terrainElements.add(new Rocaille(position)); } } } diff --git a/src/main/java/model/ModelElement.java b/src/main/java/model/ModelElement.java index 632bfada7087e8c0dcc30d627def4945d8295907..9019ce24e3108af245606ceec1ebc2e17ccf06ab 100644 --- a/src/main/java/model/ModelElement.java +++ b/src/main/java/model/ModelElement.java @@ -1,5 +1,5 @@ package model; public enum ModelElement { - FIREFIGHTER, FIRE, CLOUD, MOUNTAIN + FIREFIGHTER, FIRE, CLOUD, MOUNTAIN, ROUTE, ROCAILLE } diff --git a/src/main/java/model/Mountain.java b/src/main/java/model/Mountain.java index 74ede007754062203bb9929044757d792ee30dc4..644faf30b64e7222e2e5b1b61b4c0290de81dc6b 100644 --- a/src/main/java/model/Mountain.java +++ b/src/main/java/model/Mountain.java @@ -2,7 +2,6 @@ package model; import util.Position; -import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; diff --git a/src/main/java/model/update/NextGenerationUpdater.java b/src/main/java/model/update/NextGenerationUpdater.java index 72de8c2de2c00ca8730dbd305498b55bf0371644..0d3c77f8329fc71eb487048828e50d85d519c121 100644 --- a/src/main/java/model/update/NextGenerationUpdater.java +++ b/src/main/java/model/update/NextGenerationUpdater.java @@ -1,9 +1,6 @@ package model.update; -import model.Cloud; -import model.Fire; -import model.Firefighter; -import model.Mountain; +import model.*; import util.Position; import java.util.List; @@ -17,7 +14,8 @@ public class NextGenerationUpdater { 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) { + 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; @@ -34,6 +32,7 @@ public class NextGenerationUpdater { modifiedPositions.addAll(fire.spreadFire(Mountain.getMountainPositions(mountains))); } + // Gestion des nuages for (Cloud cloud : clouds) { cloud.move(); cloud.protectFromFire(fire); diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java index 733d9167572cfec480a99f9657eed030172c9042..9df859006c2906d3e72393771be80601eadeca54 100644 --- a/src/main/java/view/ViewElement.java +++ b/src/main/java/view/ViewElement.java @@ -3,7 +3,7 @@ package view; import javafx.scene.paint.Color; public enum ViewElement { - FIREFIGHTER(Color.BLUE), FIRE(Color.RED), CLOUD(Color.LIGHTGREY),MOUNTAIN(Color.CHOCOLATE), EMPTY(Color.WHITE); + FIREFIGHTER(Color.BLUE), FIRE(Color.RED), CLOUD(Color.LIGHTGREY),MOUNTAIN(Color.CHOCOLATE),ROUTE(Color.BLACK), ROCAILLE(Color.MAROON), EMPTY(Color.WHITE); final Color color; ViewElement(Color color) { this.color = color;