Skip to content
Snippets Groups Projects
Fire.java 2.02 KiB
Newer Older
  • Learn to ignore specific revisions
  • melizzzz's avatar
    try
    melizzzz committed
    package model;
    
    import java.util.ArrayList;
    
    import javafx.scene.paint.Color;
    
    import util.Position;
    
    melizzzz's avatar
    try
    melizzzz committed
    
    
    public class Fire implements Entity {
    
        private Position position;
    
        private final Color viewColor = Color.RED;
    
    Yanis O's avatar
    Yanis O committed
        private int age;
    
    
        public Fire(Position position, Board<Square> b) {
    
    Yanis O's avatar
    Yanis O committed
            this.b = b;
    
            this.position = position;
    
    Yanis O's avatar
    Yanis O committed
            this.age = 0;
        }
    
    
        public Fire(Position position, Board<Square> b, int age) {
    
    Yanis O's avatar
    Yanis O committed
            this.b = b;
            this.position = position;
            this.age = age;
    
        public List<Position> nextTurn(Board<Square> board) {
    
            if (board.getStepNumber() % 2 == 0)
                return new ArrayList<Position>();
            List<Position> positions = PositionUtil.generateAdjacentPositions(position, board);
    
    melizzzz's avatar
    melizzzz committed
            positions.removeIf( p -> b.doesSquareContainEntity(p, Mountain.class));
    
            for (Position p : positions) {
    
    melizzzz's avatar
    melizzzz committed
                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)) {
    
    Yanis O's avatar
    Yanis O committed
                    positions.remove(p);
                }
    
    Yanis O's avatar
    Yanis O committed
            return positions;
    
        @Override
        public void setPosition(Position p) {
            this.position = p;
        }
    
        @Override
        public Position getPosition() {
            return this.position;
    
        public Color getViewColor() {
    
    Yanis O's avatar
    Yanis O committed
    
        @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;}
    
    melizzzz's avatar
    try
    melizzzz committed
    }