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

FireFactory.class.uniqueId1

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.
    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;
        }
    }