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

Fire.java

Blame
  • Forked from COUETOUX Basile / FirefighterStarter
    30 commits ahead of the upstream repository.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Fire.java 1.51 KiB
    package model;
    
    import util.Position;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    public class Fire {
        private Set<Position> firePositions;
        private Map<Position, List<Position>> neighbors;
      //  private int step =0;
    
        public Fire(Set<Position> firePositions, Map<Position, List<Position>> neighbors) {
            this.firePositions = firePositions;
            this.neighbors = neighbors;
        }
    
        public Set<Position> getFirePositions() {
            return firePositions;
        }
    
        /*public List<Position> spreadFire() {
            List<Position> modifiedPositions = new ArrayList<>();
    
            List<Position> newFirePositions = new ArrayList<>();
            for (Position fire : firePositions) {
                newFirePositions.addAll(neighbors.get(fire));
            }
            firePositions.addAll(newFirePositions);
            modifiedPositions.addAll(newFirePositions);
            return newFirePositions;
        }*/
        public List<Position> spreadFire(Set<Position> mountains) {
            List<Position> newFires = new ArrayList<>();
            for (Position firePosition : firePositions) {
                for (Position neighbor : neighbors.get(firePosition)) {
                    if (!mountains.contains(neighbor) && !firePositions.contains(neighbor)) {
                        newFires.add(neighbor);
                    }
                }
            }
            firePositions.addAll(newFires);
            return newFires;
        }
    
        public void extinguishFire(Position neighbor) {
            firePositions.remove(neighbor);
        }
    }