Safe Haskell | None |
---|
Operations on the Area
type that involve random numbers.
Picking points inside areas
:: (X, Y) | minimum size |
-> (X, Y) | maximum size |
-> Area | the containing area, not the room itself |
-> Rnd Area |
Create a random room according to given parameters.
mkVoidRoom :: Area -> Rnd AreaSource
Create a void room, i.e., a single point area within the designated area.
Choosing connections
connectGrid :: (X, Y) -> Rnd [(Point, Point)]Source
Pick a subset of connections between adjacent areas within a grid until there is only one connected component in the graph of all areas.
randomConnection :: (X, Y) -> Rnd (Point, Point)Source
Pick a single random connection between adjacent areas within a grid.
Plotting corridors
connectPlaces :: (Area, Area) -> (Area, Area) -> Rnd CorridorSource
Try to connect two interiors of places with a corridor.
Choose entrances at least 4 or 3 tiles distant from the edges, if the place
is big enough. Note that with pfence == FNone
, the area considered
is the strict interior of the place, without the outermost tiles.