Select Git revision
AbstractShape.java
Forked from
COUETOUX Basile / graphic-2020
Source project has a limited visibility.
-
GHOMARI Ilyes authoredGHOMARI Ilyes authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
FireBehavior.java 1.44 KiB
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;
}
}