Select Git revision
build.gradle
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;
}
}