package org.mafagafogigante.dungeon.world; import org.mafagafogigante.dungeon.entity.creatures.Observer; import java.io.Serializable; import java.util.Arrays; import java.util.List; /** * A collection of visibility criterion. */ public class VisibilityCriteria implements Serializable { private final List<VisibilityCriterion> visibilityCriteria; public VisibilityCriteria(VisibilityCriterion... visibilityCriteria) { this.visibilityCriteria = Arrays.asList(visibilityCriteria); } /** * Evaluates whether or not these visibility criteria is met by an observer. */ public boolean isMetBy(Observer observer) { for (VisibilityCriterion criterion : visibilityCriteria) { if (!criterion.isMetBy(observer)) { return false; } } return true; } @Override public String toString() { return "visibilityCriteria=VisibilityCriteria{" + visibilityCriteria + '}'; } }