package rescuecore2.standard.score;
import rescuecore2.score.AbstractScoreFunction;
import rescuecore2.config.Config;
import rescuecore2.worldmodel.WorldModel;
import rescuecore2.worldmodel.Entity;
import rescuecore2.Timestep;
import rescuecore2.standard.entities.Civilian;
/**
Score function that measures the number of living civilians. One point per civilian still alive.
*/
public class CiviliansAliveScoreFunction extends AbstractScoreFunction {
/**
Construct a CiviliansAliveScoreFunction.
*/
public CiviliansAliveScoreFunction() {
super("Civilians alive");
}
@Override
public void initialise(WorldModel<? extends Entity> world, Config config) {
}
@Override
public double score(WorldModel<? extends Entity> world, Timestep timestep) {
double sum = 0;
for (Entity next : world) {
if (next instanceof Civilian) {
Civilian c = (Civilian)next;
if (c.isHPDefined() && c.getHP() > 0) {
++sum;
}
}
}
return sum;
}
}