Newer
Older
package model;
import util.Position;
public class Fire implements Element {
MEHDI
committed
private ModelElement modelElement;
public Fire(Position position){
MEHDI
committed
modelElement = ModelElement.FIRE;
public Position getPosition() {
return position;
@Override
public ModelElement getElement() {
return modelElement;
}
public void setPosition(Position position) {
this.position = position;
MEHDI
committed
public List<Position> update(Board<List<ModelElement>> firefighterBoard) {
List<Position> modifiedPositions = new ArrayList<>();
if (firefighterBoard.stepNumber() % 2 == 0) {
MEHDI
committed
Set<Position> newFirePositions = new HashSet<>();
for (Position fire : new HashSet<>(firefighterBoard.getFires().keySet())) {
MEHDI
committed
List<Position> neighboursAvaiable = firefighterBoard.getNeighbor().getNeighbors().get(fire);
MEHDI
committed
neighboursAvaiable.removeAll(firefighterBoard.getObstacles().keySet());
MEHDI
committed
newFirePositions.addAll(firefighterBoard.getNeighbor().getNeighbors().get(fire));
MEHDI
committed
}
for (Position position : newFirePositions) {
if (!firefighterBoard.getFires().containsKey(position)) {
firefighterBoard.getFires().put(position, new Fire(position));
modifiedPositions.add(position);
}
}
}
return modifiedPositions;
}
public boolean contains(List<Position> positions) {
return positions.contains(this.getPosition());