001package squidpony.squidgrid.mapping;
002
003/**
004 * Created by Tommy Ettinger on 6/1/2017.
005 */
006public interface IDungeonGenerator {
007    /**
008     * Generates a dungeon or other map as a 2D char array. Any implementation may allow its own configuration and
009     * customization of how dungeons are generated, but each must provide this as a sane default. Most implementations
010     * should use the convention of '#' representing a wall and '.' representing a bare floor, but beyond that, anything
011     * could be present in the char array.
012     * @return a 2D char array representing some kind of map, probably using standard conventions for walls/floors
013     */
014    char[][] generate();
015
016    /**
017     * Gets the most recently-produced dungeon as a 2D char array, usually produced by calling {@link #generate()} or
018     * some similar method present in a specific implementation. This normally passes a direct reference and not a copy,
019     * so you can normally modify the returned array to propagate changes back into this IDungeonGenerator.
020     * @return the most recently-produced dungeon/map as a 2D char array
021     */
022    char[][] getDungeon();
023}