Select Git revision
IndustrialFireFighterBehavior.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.
IndustrialFireFighterBehavior.java 1.54 KiB
package model.firefighter.behaviors;
import model.BoardData;
import model.Element;
import model.elementTokens.Chargable;
import model.elementTokens.ChargeTarget;
import model.firefighter.ModelElement;
import model.firefighter.elements.Fire;
import model.firefighter.elements.FireFighter;
import model.firefighter.elements.IndustrialFireFighter;
import model.genericBehavior.ChargerBehavior;
import model.genericBehavior.RemoverBehavior;
import model.genericBehavior.TangibleBehavior;
import util.Position;
import util.TargetStrategy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class IndustrialFireFighterBehavior extends FireFighterBehavior {
private TargetStrategy ts=new TargetStrategy();
@Override
public List<Position> update(BoardData boardData,Element element) {
Position position=element.getPosition();
List<Position> targets=initializeTargets(boardData);
((Chargable)element).incrementCounter();
if (((Chargable)element).isCharged()){
((Chargable)element).resetCounter();
for (int i = 0; i<((FireFighter)element).speed; i++) {
position=ts.neighborClosestToFire(position,targets,allLegalNeighbors(boardData));
targets.remove(position);
targets.removeAll(boardData.getNeighbor(position));
}
for(Position p:legalNeighbors(boardData,position))
{
extinguish(boardData,p);
}
}
return List.of(position);
}
}