Skip to content
Snippets Groups Projects
Select Git revision
  • a23b1cce899b90c680dfc7f6e270239f536b3910
  • main default protected
  • variant
3 results

Fire.java

Blame
  • Forked from COUETOUX Basile / FirefighterStarter
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Fire.java 1.76 KiB
    package model;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
    
    import javafx.scene.paint.Color;
    import util.Position;
    
    public class Fire implements Entity{
        Board<Entity> b;
        private Position position;
        private final Color viewColor = Color.RED;
        private int age;
        public Fire(Position position, Board<Entity> b){
            this.b = b;
            this.position = position;
            this.age = 0;
        }
        public Fire(Position position, Board<Entity> b, int age){
            this.b = b;
            this.position = position;
            this.age = age;
        }
    
        @Override
        public List<Position> nextTurn(Board<Entity> board) {
            age = age +1;
            List<Position> positions = generateAdjacentPosition();
            for(Position p : positions){
                board.setState(new Fire(p, board), p);
                if(!b.doesPositionExist(p)){
                    positions.remove(p);
                }
            }
            return positions;
        }
    
        private List<Position> generateAdjacentPosition(){
            int x = position.x();
            int y = position.y();
    
            return Stream.of(
                    new Position(x, y + 1),
                    new Position(x + 1, y),
                    new Position(x, y - 1),
                    new Position(x - 1, y)
                )
                .filter(p -> b.doesPositionExist(p))
                .collect(Collectors.toList());
        }
    
        
        @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 ;
        }
    }