LambdaHack-0.2.10: A roguelike game engine in early and active development

Safe HaskellNone

Game.LambdaHack.Common.Tile

Description

Operations concerning dungeon level tiles.

Unlike for many other content types, there is no type Tile, of particular concrete tiles in the dungeon, corresponding to TileKind (the type of kinds of terrain tiles). This is because the tiles are too numerous and there's not enough storage space for a well-rounded Tile type, on one hand, and on the other hand, tiles are accessed too often in performance critical code to try to compress their representation and/or recompute them. Instead, of defining a Tile type, we express various properties of concrete tiles by arrays or sparse EnumMaps, as appropriate.

Actors at normal speed (2 m/s) take one turn to move one tile (1 m by 1 m).

Synopsis

Documentation

type SmellTime = Time

The last time a hero left a smell in a given tile. To be used by monsters that hunt by smell.

kindHasFeature :: Feature -> TileKind -> Bool

Whether a tile kind has the given feature.

kindHas :: [Feature] -> [Feature] -> TileKind -> Bool

Whether a tile kind has all features of the first set and no features of the second.

hasFeature :: Ops TileKind -> Feature -> Id TileKind -> Bool

Whether a tile kind (specified by its id) has the given feature.

isClear :: Ops TileKind -> Id TileKind -> Bool

Whether a tile does not block vision. Essential for efficiency of FOV, hence tabulated.

isLit :: Ops TileKind -> Id TileKind -> Bool

Whether a tile is lit on its own. Essential for efficiency of Perception, hence tabulated.

isExplorable :: Ops TileKind -> Id TileKind -> Bool

Whether a tile can be explored, possibly yielding a treasure or a hidden message.

similar :: TileKind -> TileKind -> Bool

The player can't tell one tile from the other.

openable :: Ops TileKind -> Id TileKind -> Bool

Whether a tile kind (specified by its id) has a OpenTo feature.

closable :: Ops TileKind -> Id TileKind -> Bool

Whether a tile kind (specified by its id) has a CloseTo feature.

changeable :: Ops TileKind -> Id TileKind -> Bool

Whether a tile kind (specified by its id) has a ChangeTo feature.