Select Git revision
SimulatorApplication.java
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.
BoardFireFighterBehavior.java 7.46 KiB
package model;
import util.Position;
import util.TargetStrategy;
import java.util.*;
public class BoardFireFighterBehavior implements BoardBehavior{
private static TargetStrategy targetStrategy = new TargetStrategy();
private static Map<Position, List<Position>> neighbors;
private static List<Position> rocky;
private ElementFactory<Rocky> rockyFactory;
private static Map<Position, Terrain> terrainMap = new HashMap<>();
private static int step;
static Movements fireMovements ;
static Movements fireFighterMovements;
static Movements cloudMovements;
static Movements motorizedMovements;
private ElementGenerator moutainGenerator;
public BoardFireFighterBehavior(Map<Position, List<Position>> neighbors, ElementFactory<Fire> fireFactory ,ElementFactory<FireFighter> firefighterFactory,
ElementFactory<Cloud> cloudFactory,ElementFactory<MotorizedFireFighter> motorizedFactory,ElementFactory<Rocky> rockyFactory) {
this.step=0;
this.neighbors = neighbors;
this.rockyFactory=rockyFactory;
fireMovements=new FireMovements(fireFactory);
fireFighterMovements=new FireFighterMovements(firefighterFactory);
cloudMovements=new CloudMovements(cloudFactory);
motorizedMovements=new MotorizedMovements(motorizedFactory);
moutainGenerator=new MountainGenerator();
}
public void initializeElements(int rowCount, int columnCount) {
fireMovements.initializeElement(rowCount,columnCount);
fireFighterMovements.initializeElement(rowCount,columnCount);
cloudMovements.initializeElement(rowCount,columnCount);
// Pompiers motorisés
motorizedMovements.initializeElement(rowCount,columnCount);
// Rocky
rocky = new ArrayList<>();
List<Rocky> rockies = rockyFactory.createElements(rowCount, columnCount);
for (Rocky rockyElement : rockies) {
rocky.add(rockyElement.getPosition());
}
moutainGenerator.generateElement(rowCount,columnCount);
generateRoads(rowCount,columnCount);
}
public static void extinguish(Position position) {
fireMovements.getPositions().remove(position);
}
public Set<Position> getFirePositions() {
return (Set<Position>) fireMovements.getPositions();
}