package org.mafagafogigante.dungeon.world; import org.mafagafogigante.dungeon.entity.creatures.Observer; import org.mafagafogigante.dungeon.util.Utils; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * The sky of a world. */ public class Sky implements Serializable { private static final long serialVersionUID = 4645468371061618602L; private final Collection<AstronomicalBody> astronomicalBodies = new ArrayList<>(); /** * Constructs an empty sky. */ Sky() { } /** * Adds an astronomical body to the sky. */ void addAstronomicalBody(AstronomicalBody astronomicalBody) { astronomicalBodies.add(astronomicalBody); } /** * Returns a description of the sky with all its visible features. */ public String describeYourself(Observer observer) { List<String> descriptions = new ArrayList<>(); for (AstronomicalBody astronomicalBody : astronomicalBodies) { if (astronomicalBody.isVisible(observer)) { descriptions.add(astronomicalBody.describeYourself()); } } return Utils.enumerate(descriptions); } @Override public String toString() { return "Sky{astronomicalBodies=" + astronomicalBodies + '}'; } }