package model; import util.Position; import java.util.ArrayList; import java.util.List; import java.util.Map; public class FireBehavior extends FFBehavior implements TangibleBehavior<ModelElement> { private List<ModelElement> obstacles=List.of(ModelElement.MOUNTAIN); public FireBehavior(ModelElement element) { super(element); } @Override public List<Position> getNext(BoardData boardData) { List<Position> firePositions = boardData.getPositions().get(element.ordinal()); List<Position> newFirePositions = new ArrayList<>(); if (boardData.getStep() % 2 == 0) { for (Position fire : firePositions) { for (Position neighbor:legalNeighbors(boardData).get(fire)) { if (!newFirePositions.contains(neighbor)) newFirePositions.add(neighbor); } } } return newFirePositions; } @Override public List<ModelElement> getObstacles() { return obstacles; } @Override public Map<Position, List<Position>> legalNeighbors(BoardData boardData) { Map<Position,List<Position>> neigbors= super.legalNeighbors(boardData); for (Map.Entry<Position,List<Position>> entry: neigbors.entrySet()) { for (ModelElement e:getObstacles()) { entry.getValue().removeAll(boardData.getPositions().get(e.ordinal())); } } return neigbors; } }