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

view.fxml

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.
    FirefighterBoard.java 2.28 KiB
    package model;
    
    import model.fireFighterElements.*;
    import util.Position;
    
    import java.util.*;
    
    public class FirefighterBoard extends AbstractBoard<FireFighterModelElement> {
      private HashMap<String, Integer> elementsCount;
    
      public Fire fire;
      public FireFighterPerson fireFighters;
      public FireTruck fireTrucks;
      public Cloud cloud;
      public Mountain mountain;
      public Road road;
      public Rockery rockery;
    
      public FirefighterBoard(int columnCount, int rowCount, HashMap<String, Integer> elementsCount) {
        super(columnCount, rowCount);
        this.elementsCount = elementsCount;
    
        mountain = new Mountain(columnCount, rowCount);
        road = new Road(columnCount, rowCount);
        rockery = new Rockery(columnCount, rowCount);
        fire = new Fire(columnCount, rowCount, mountain, road, rockery);
        fireFighters = new FireFighterPerson(columnCount, rowCount, fire, mountain);
        cloud = new Cloud(columnCount, rowCount, fire);
        fireTrucks = new FireTruck(columnCount, rowCount, fire, mountain);
    
        elements = new Elements[] { fire, fireFighters, cloud, fireTrucks, mountain, road, rockery };
    
        initializeElements();
      }
    
      public void initializeElements() {
        fire.initializeElements(elementsCount.get("fire_count"));
        fireFighters.initializeElements(elementsCount.get("firefighter_count"));
        cloud.initializeElements(elementsCount.get("cloud_count"));
        fireTrucks.initializeElements(elementsCount.get("firetruck_count"));
        mountain.initializeElements(elementsCount.get("mountain_count"));
        road.initializeElements(elementsCount.get("road_count"));
        rockery.initializeElements(elementsCount.get("rockery_count"));
      }
    
      public List<Position> updateToNextGeneration() {
    
        List<Position> modifiedElements = new ArrayList<>();
    
        for (Elements element : elements) {
          modifiedElements.addAll(element.getElementsPositions());
        }
    
        fireFighters.nextMove();
    
        fireTrucks.nextMove();
    
        cloud.nextMove();
    
        fire.extinguishs(fireFighters.getElementsPositions());
        fire.extinguishs(fireTrucks.getElementsPositions());
        fire.extinguishs(cloud.getElementsPositions());
    
        if (step % 2 == 0)
          fire.nextMove();
    
        step++;
    
        for (Elements element : elements) {
          modifiedElements.addAll(element.getElementsPositions());
        }
    
        return modifiedElements;
      }
    
    }