package org.mafagafogigante.dungeon.world; import org.mafagafogigante.dungeon.entity.creatures.Observer; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; class SimpleAstronomicalBody implements AstronomicalBody, Serializable { private final String description; private final Collection<VisibilityCriterion> visibilityCriteria; SimpleAstronomicalBody(String description, VisibilityCriterion... criteria) { this.description = description; this.visibilityCriteria = new ArrayList<>(Arrays.asList(criteria)); } @Override public boolean isVisible(Observer observer) { for (VisibilityCriterion visibilityCriterion : visibilityCriteria) { if (!visibilityCriterion.isMetBy(observer)) { return false; } } return true; } @Override public String describeYourself() { return description; } @Override public String toString() { return description; } }