LambdaHack-0.6.1.0: A game engine library for roguelike dungeon crawlers

Safe HaskellNone
LanguageHaskell2010

Game.LambdaHack.Server.DungeonGen.AreaRnd

Contents

Description

Operations on the Area type that involve random numbers.

Synopsis

Picking points inside areas

xyInArea :: Area -> Rnd Point Source #

Pick a random point within an area.

mkVoidRoom :: Area -> Rnd Area Source #

Create a void room, i.e., a single point area within the designated area.

mkRoom Source #

Arguments

:: (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.

mkFixed Source #

Arguments

:: (X, Y)

maximum size

-> Area

the containing area, not the room itself

-> Point

the center point

-> Area 

Choosing connections

connectGrid :: EnumSet Point -> (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

data HV Source #

The choice of horizontal and vertical orientation.

Constructors

Horiz 
Vert 

Instances

Eq HV Source # 

Methods

(==) :: HV -> HV -> Bool #

(/=) :: HV -> HV -> Bool #

type Corridor = [Point] Source #

The coordinates of consecutive fields of a corridor.

connectPlaces :: (Area, Fence, Area) -> (Area, Fence, Area) -> Rnd (Maybe Corridor) Source #

Try to connect two interiors of places with a corridor. Choose entrances some steps away from the edges, if the place is big enough. Note that with pfence == FNone, the inner area considered is the strict interior of the place, without the outermost tiles.

The corridor connects (touches) the inner areas and the turning point of the corridor (if any) is outside of the outer areas and inside the grid areas.