diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index 19a03eefe2e98a6b30c7ed132d666a578bcf20e0..ac18882cc072af0e0924338e9474aa9bc761d15a 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -94,6 +94,9 @@ public class Controller { if (squareState.contains(ModelElement.ROAD)) { return ViewElement.ROAD; } + if (squareState.contains(ModelElement.MOUNTAIN)) { + return ViewElement.MOUNTAIN; + } return ViewElement.EMPTY; } diff --git a/src/main/java/model/FireFighter.java b/src/main/java/model/FireFighter.java index f07b2f8108812830c9fd5815d69495b99977517c..b656cf75278d2f5d4067097cad54900cfda5a35e 100644 --- a/src/main/java/model/FireFighter.java +++ b/src/main/java/model/FireFighter.java @@ -6,6 +6,7 @@ import util.TargetStrategy; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; @@ -29,17 +30,26 @@ public class FireFighter extends Extinguisher { Position currentPosition = this.getPosition(); Position newPosition = targetStrategy.neighborClosestToFire(currentPosition, firefighterBoard.getFires().keySet(), this.neighbour.getNeighbors()); + this.setPosition(newPosition); modifiedPositions.add(currentPosition); modifiedPositions.add(newPosition); extinguish(firefighterBoard,newPosition); + + for (Position neighbor : this.neighbour.getNeighbors().get(newPosition)) { extinguish(firefighterBoard,neighbor); modifiedPositions.add(neighbor); } + for(Obstacle obstacle : firefighterBoard.getObstacles().values()){ + if(obstacle instanceof Montain){ + modifiedPositions.remove(obstacle.getPosition()); + } + } + return modifiedPositions; } diff --git a/src/main/java/model/ModelElement.java b/src/main/java/model/ModelElement.java index 94616d551898fe09fc7f9c13be73fc98bb157d28..4fdb6d94a2ed06fc1d6f260d47699b3652263460 100644 --- a/src/main/java/model/ModelElement.java +++ b/src/main/java/model/ModelElement.java @@ -10,7 +10,8 @@ public enum ModelElement { FIREFIGHTER(10), FIRE(10), CLOUD(10), - ROAD(5); + ROAD(5), + MOUNTAIN(5); private final int initialNumber; @@ -30,6 +31,7 @@ public enum ModelElement { case ROAD -> new Road(position); case FIREFIGHTER -> new FireFighter(position); case CLOUD -> new Cloud(position); + case MOUNTAIN -> new Montain(position); default -> throw new IllegalArgumentException("Unknown ModelElement: " + this); }; diff --git a/src/main/java/model/Montain.java b/src/main/java/model/Montain.java new file mode 100644 index 0000000000000000000000000000000000000000..af69b265d537bfd2000e601019151ac7a02fc848 --- /dev/null +++ b/src/main/java/model/Montain.java @@ -0,0 +1,12 @@ +package model; + +import util.Position; + +public class Montain extends Obstacle{ + public Montain(Position position) { + super(position); + element = ModelElement.MOUNTAIN; + } + + +} diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java index c7fad49c1f47dae3484d671b744f6255b5310757..7cc068347513a014254e29ec27250ffd8a3b72e9 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.LIGHTSKYBLUE),ROAD(Color.GRAY), EMPTY(Color.WHITE); + FIREFIGHTER(Color.BLUE), FIRE(Color.RED),CLOUD(Color.LIGHTSKYBLUE),ROAD(Color.GRAY),MOUNTAIN(Color.BROWN), EMPTY(Color.WHITE); final Color color; ViewElement(Color color) { this.color = color;