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;
public List<Position> update(FirefighterBoard 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())) {
List<Position> neighboursAvaiable = firefighterBoard.getNeighbors().get(fire);
neighboursAvaiable.removeAll(firefighterBoard.getObstacles().keySet());
newFirePositions.addAll(firefighterBoard.getNeighbors().get(fire));
}
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());