package model; import java.util.ArrayList; import java.util.List; import javafx.scene.paint.Color; import util.Position; import util.PositionUtil; import util.PositionUtil; public class Fire implements Entity { Board<Square> b; private Position position; private final Color viewColor = Color.RED; private int age; private final int priority = 0; public Fire(Position position, Board<Square> b) { this.b = b; this.position = position; this.age = 0; } public Fire(Position position, Board<Square> b, int age) { this.b = b; this.position = position; this.age = age; } @Override public List<Position> nextTurn(Board<Square> board) { if (board.getStepNumber() % 2 == 0) return new ArrayList<Position>(); List<Position> positions = PositionUtil.generateAdjacentPositions(position, board); positions.removeIf( p -> b.doesSquareContainEntity(p, Mountain.class)); for (Position p : positions) { if (b.getStates(p).isEmpty() && !b.getStates(p).getEntities().contains(Cloud.class)) { if (b.getStates(p).getMaxAge() < b.getStepNumber() && PositionUtil.getManhattanDistance(position, p) == 1) { board.addEntityAtSquare(new Fire(p, board), p); } } if (!b.doesPositionExist(p)) { positions.remove(p); } } return positions; } @Override public void setPosition(Position p) { this.position = p; } @Override public Position getPosition() { return this.position; } public Color getViewColor() { return this.viewColor; } @Override public int getAge() { return this.age; } @Override public void incrementAge() { this.age = age + 1; } @Override public void setAge(int age) { this.age = age; } @Override public int getPriority(){ return this.priority;} }