package csa.tiletools.worldgen.heroextant.maptoolkit;

import com.google.common.collect.ImmutableList;
import csa.tiletools.worldgen.heroextant.framework.uilayer.scene.ClippedElementDelegate;
import csa.tiletools.worldgen.heroextant.maptoolkit.data.ConstMapData;

import csa.tiletools.worldgen.heroextant.maptoolkit.math.graph.Graph;
import csa.tiletools.worldgen.heroextant.maptoolkit.util.Point;

public interface Map extends Graph<Point, Direction>, ClippedElementDelegate {

    String getName();

    String getExitAt(Point p);

    String getStairsAt(Point p);

    int getWidth();

    int getHeight();

    boolean isBlockedAt(Point p);

    Point getLocationOfExit(String exit);

    boolean isOffMap(Point p);

    ImmutableList<ConstMapData<?>> debugGetDataLayers();

    void debugToggleDataLayer(ConstMapData<?> layer);
}