Safe Haskell | None |
---|---|
Language | Haskell2010 |
The type of kinds of terrain tiles.
- data TileKind = TileKind {}
- data Feature
- validateSingleTileKind :: TileKind -> [Text]
- validateAllTileKind :: [TileKind] -> [Text]
- actionFeatures :: Bool -> TileKind -> IS.IntSet
Documentation
The type of kinds of terrain tiles. See Tile.hs
for explanation
of the absence of a corresponding type Tile
that would hold
particular concrete tiles in the dungeon.
Show TileKind | |
type Speedup TileKind = TileSpeedup |
All possible terrain tile features.
Embed !(GroupName ItemKind) | embed an item of this group, to cause effects (WIP) |
Cause !Effect | causes the effect when triggered;
more succint than |
OpenTo !(GroupName TileKind) | goes from a closed to an open tile when altered |
CloseTo !(GroupName TileKind) | goes from an open to a closed tile when altered |
ChangeTo !(GroupName TileKind) | alters tile, but does not change walkability |
HideAs !(GroupName TileKind) | when hidden, looks as a tile of the group |
RevealAs !(GroupName TileKind) | if secret, can be revealed to belong to the group |
Walkable | actors can walk through |
Clear | actors can see through |
Dark | is not lit with an ambient shine |
Suspect | may not be what it seems (clients only) |
Impenetrable | can never be excavated nor seen through |
OftenItem | initial items often generated there |
OftenActor | initial actors and stairs often generated there |
NoItem | no items ever generated there |
NoActor | no actors nor stairs ever generated there |
Trail | used for visible trails throughout the level |
validateSingleTileKind :: TileKind -> [Text] Source
Validate a single tile kind.
validateAllTileKind :: [TileKind] -> [Text] Source
Validate all tile kinds.
If tiles look the same on the map, the description and the substantial features should be the same, too. Otherwise, the player has to inspect manually all the tiles of that kind, or even experiment with them, to see if any is special. This would be tedious. Note that iiles may freely differ wrt dungeon generation, AI preferences, etc.
actionFeatures :: Bool -> TileKind -> IS.IntSet Source
Features of tiles that differentiate them substantially from one another. By tile content validation condition, this means the player can tell such tile apart, and only looking at the map, not tile name. So if running uses this function, it won't stop at places that the player can't himself tell from other places, and so running does not confer any advantages, except UI convenience. Hashes are accurate enough for our purpose, given that we use arbitrary heuristics anyway.