| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Game.LambdaHack.Common.Perception
Description
Actors perceiving other actors and the dungeon level.
Visibility works according to KISS. Everything that player sees is real. There are no unmarked hidden tiles and only solid tiles can be marked, so there are no invisible walls and to pass through an illusory wall, you have to use a turn bumping into it first. Only tiles marked with Suspect can turn out to be another tile. (So, if all tiles are marked with Suspect, the player knows nothing for sure, but this should be avoided, because searching becomes too time-consuming.) Each actor sees adjacent tiles, even when blind, so adjacent tiles are known, so the actor can decide accurately whether to pass thorugh or alter, etc.
Items are always real and visible. Actors are real, but can be invisible. Invisible actors in walls can't be hit, but are hinted at when altering the tile, so the player can flee or block. Invisible actors in open space can be hit.
Synopsis
- newtype PerVisible = PerVisible {}
- newtype PerSmelled = PerSmelled {}
- data Perception = Perception {
- psight :: PerVisible
- psmell :: PerSmelled
- type PerLid = EnumMap LevelId Perception
- type PerFid = EnumMap FactionId PerLid
- totalVisible :: Perception -> EnumSet Point
- totalSmelled :: Perception -> EnumSet Point
- emptyPer :: Perception
- nullPer :: Perception -> Bool
- addPer :: Perception -> Perception -> Perception
- diffPer :: Perception -> Perception -> Perception
Documentation
newtype PerVisible #
Visible positions.
Constructors
| PerVisible | |
Instances
| Eq PerVisible # | |
Defined in Game.LambdaHack.Common.Perception | |
| Show PerVisible # | |
Defined in Game.LambdaHack.Common.Perception Methods showsPrec :: Int -> PerVisible -> ShowS # show :: PerVisible -> String # showList :: [PerVisible] -> ShowS # | |
| Binary PerVisible # | |
Defined in Game.LambdaHack.Common.Perception | |
newtype PerSmelled #
Smelled positions.
Constructors
| PerSmelled | |
Instances
| Eq PerSmelled # | |
Defined in Game.LambdaHack.Common.Perception | |
| Show PerSmelled # | |
Defined in Game.LambdaHack.Common.Perception Methods showsPrec :: Int -> PerSmelled -> ShowS # show :: PerSmelled -> String # showList :: [PerSmelled] -> ShowS # | |
| Binary PerSmelled # | |
Defined in Game.LambdaHack.Common.Perception | |
data Perception #
The type representing the perception of a faction on a level.
Constructors
| Perception | |
Fields
| |
Instances
| Eq Perception # | |
Defined in Game.LambdaHack.Common.Perception | |
| Show Perception # | |
Defined in Game.LambdaHack.Common.Perception Methods showsPrec :: Int -> Perception -> ShowS # show :: Perception -> String # showList :: [Perception] -> ShowS # | |
| Generic Perception # | |
Defined in Game.LambdaHack.Common.Perception Associated Types type Rep Perception :: * -> * # | |
| Binary Perception # | |
Defined in Game.LambdaHack.Common.Perception | |
| type Rep Perception # | |
Defined in Game.LambdaHack.Common.Perception type Rep Perception = D1 (MetaData "Perception" "Game.LambdaHack.Common.Perception" "LambdaHack-0.8.3.0-1hn0NFDS4ux6qD3ggO7yse" False) (C1 (MetaCons "Perception" PrefixI True) (S1 (MetaSel (Just "psight") NoSourceUnpackedness NoSourceStrictness DecidedStrict) (Rec0 PerVisible) :*: S1 (MetaSel (Just "psmell") NoSourceUnpackedness NoSourceStrictness DecidedStrict) (Rec0 PerSmelled))) | |
type PerLid = EnumMap LevelId Perception #
Perception of a single faction, indexed by level identifier.
type PerFid = EnumMap FactionId PerLid #
Perception indexed by faction identifier.
This can't be added to FactionDict, because clients can't see it
for other factions.
totalVisible :: Perception -> EnumSet Point #
The set of tiles visible by at least one hero.
totalSmelled :: Perception -> EnumSet Point #
The set of tiles smelt by at least one hero.
emptyPer :: Perception #
nullPer :: Perception -> Bool #
addPer :: Perception -> Perception -> Perception #
diffPer :: Perception -> Perception -> Perception #