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

Safe HaskellNone
LanguageHaskell2010

Game.LambdaHack.Content.CaveKind

Description

The type of cave layout kinds.

Synopsis

Documentation

data CaveKind Source

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

Constructors

CaveKind 

Fields

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

Instances

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.