package model.Extinguisher; import model.Board; import model.ModelElement; import model.Obstacle.Mountain; import model.Obstacle.Obstacle; import util.Neighbour; import util.Position; import java.util.ArrayList; import java.util.List; public class MotorizedFireFighter extends Extinguisher { public MotorizedFireFighter(Position position) { super(position); this.element = ModelElement.MOTORIZEDFIREFIGHTER; } @Override public List<Position> update(Board<List<ModelElement>> firefighterBoard) { this.neighbour = new Neighbour(firefighterBoard); List<Position> modifiedPositions = new ArrayList<>(); Position currentPosition = this.getPosition(); Position newPosition = targetStrategy.neighborClosestToFire(currentPosition, firefighterBoard.getFires().keySet(), this.neighbour.getNeighbors()); Position DoublenewPosition = targetStrategy.neighborClosestToFire(newPosition, firefighterBoard.getFires().keySet(), this.neighbour.getNeighbors()); this.setPosition(DoublenewPosition); modifiedPositions.add(currentPosition); modifiedPositions.add(DoublenewPosition); extinguish(firefighterBoard, newPosition); extinguish(firefighterBoard, DoublenewPosition); for (Position neighbor : this.neighbour.getNeighbors().get(DoublenewPosition)) { extinguish(firefighterBoard, neighbor); modifiedPositions.add(neighbor); } for (Obstacle obstacle : firefighterBoard.getObstacles().values()) { if (obstacle instanceof Mountain) { modifiedPositions.remove(obstacle.getPosition()); } } return modifiedPositions; } }