001package squidpony.squidgrid.zone;
002
003/**
004 * Created by Tommy Ettinger on 11/24/2016.
005 */
006public interface ImmutableZone extends Zone {
007    /**
008     * Expands the area of this Zone in the four cardinal directions, performing the expansion consecutively
009     * {@code distance} times. Does not modify this Zone; returns a new Zone with the requested changes.
010     * @param distance the amount to expand outward using Manhattan distance (diamond shape)
011     * @return a freshly-constructed Zone with the requested changes
012     */
013    Zone expand(int distance);
014
015    /**
016     * Expands the area of this Zone in the four cardinal and four diagonal directions, performing the expansion
017     * consecutively {@code distance} times. Does not modify this Zone; returns a new Zone with the requested changes.
018     * @param distance the amount to expand outward using Chebyshev distance (square shape)
019     * @return a freshly-constructed Zone with the requested changes
020     */
021    Zone expand8way(int distance);
022
023}