diff --git a/src/main/java/model/Cloud.java b/src/main/java/model/Cloud.java index f717409bc704a5c1c2f7f92c7491112da4c42715..99620fdb81b920e24505f9fe576d23d8b100b655 100644 --- a/src/main/java/model/Cloud.java +++ b/src/main/java/model/Cloud.java @@ -15,16 +15,32 @@ public class Cloud { this.neighbors = neighbors; } - public Position getPosition() { - return position; + public void moveAndExtinguishFire(Fire fire) { + Position newPosition = moveToNewPosition(); + this.position = newPosition; + + extinguishNeighboringFires(fire); + } + + private Position moveToNewPosition() { + List<Position> neighborsList = neighbors.get(position); + return neighborsList.get((int) (Math.random() * neighborsList.size())); } - public void moveRandomly() { - List<Position> adjacentPositions = neighbors.get(position); - position = adjacentPositions.get(randomGenerator.nextInt(adjacentPositions.size())); + private void extinguishNeighboringFires(Fire fire) { + List<Position> neighboringPositions = neighbors.get(position); + for (Position neighbor : neighboringPositions) { + if (fire.getFirePositions().contains(neighbor)) { + fire.extinguishFire(neighbor); + } + } + } + + public Position getPosition() { + return position; } - public void extinguishFire(Fire fire) { + public void extinguishFireCloud(Fire fire) { fire.getFirePositions().remove(position); } }