LambdaHack- A game engine library for roguelike dungeon crawlers

Safe HaskellNone



The type of cave layout kinds.



data CaveKind Source

Parameters for the generation of dungeon levels. Warning: for efficiency, avoid embedded items in any of the common tiles.




csymbol :: !Char

a symbol

cname :: !Text

short description

cfreq :: !(Freqs CaveKind)

frequency within groups

cxsize :: !X

X size of the whole cave

cysize :: !Y

Y size of the whole cave

cgrid :: !DiceXY

the dimensions of the grid of places

cminPlaceSize :: !DiceXY

minimal size of places

cmaxPlaceSize :: !DiceXY

maximal size of places

cdarkChance :: !Dice

the chance a place is dark

cnightChance :: !Dice

the chance the cave is dark

cauxConnects :: !Rational

a proportion of extra connections

cmaxVoid :: !Rational

at most this proportion of rooms void

cminStairDist :: !Int

minimal distance between stairs

cdoorChance :: !Chance

the chance of a door in an opening

copenChance :: !Chance

if there's a door, is it open?

chidden :: !Int

if not open, hidden one in n times

cactorCoeff :: !Int

the lower, the more monsters spawn

cactorFreq :: !(Freqs ItemKind)

actor groups to consider

citemNum :: !Dice

the number of items in the cave

citemFreq :: !(Freqs ItemKind)

item groups to consider

cplaceFreq :: !(Freqs PlaceKind)

place groups to consider

cpassable :: !Bool

are passable default tiles permitted

cdefTile :: !(GroupName TileKind)

the default cave tile

cdarkCorTile :: !(GroupName TileKind)

the dark cave corridor tile

clitCorTile :: !(GroupName TileKind)

the lit cave corridor tile

cfillerTile :: !(GroupName TileKind)

the filler wall

couterFenceTile :: !(GroupName TileKind)

the outer fence wall

clegendDarkTile :: !(GroupName TileKind)

the dark place plan legend

clegendLitTile :: !(GroupName TileKind)

the lit place plan legend


validateSingleCaveKind :: CaveKind -> [Text] Source

Catch caves with not enough space for all the places. Check the size of the cave descriptions to make sure they fit on screen. Etc.

validateAllCaveKind :: [CaveKind] -> [Text] Source

Validate all cave kinds. Note that names don't have to be unique: we can have several variants of a cave with a given name.