Safe Haskell | None |
---|---|
Language | Haskell2010 |
Game.LambdaHack.Client.UI.Msg
Description
Game messages displayed on top of the screen for the player to read and then saved to player history.
Synopsis
- data Msg
- toMsg :: Maybe (EnumMap MsgClass Color) -> MsgClass -> Text -> Msg
- data MsgClass
- = MsgAdmin
- | MsgBecome
- | MsgNoLonger
- | MsgLongerUs
- | MsgLonger
- | MsgItemCreation
- | MsgItemDestruction
- | MsgDeathGood
- | MsgDeathBad
- | MsgDeath
- | MsgDeathThreat
- | MsgLeader
- | MsgDiplomacy
- | MsgOutcome
- | MsgPlot
- | MsgLandscape
- | MsgTileDisco
- | MsgItemDisco
- | MsgActorSpot
- | MsgFirstEnemySpot
- | MsgItemSpot
- | MsgItemMove
- | MsgAction
- | MsgActionMinor
- | MsgEffectMajor
- | MsgEffect
- | MsgEffectMinor
- | MsgMisc
- | MsgHeardClose
- | MsgHeard
- | MsgFocus
- | MsgWarning
- | MsgRangedPowerfulWe
- | MsgRangedPowerfulUs
- | MsgRanged
- | MsgRangedUs
- | MsgRare
- | MsgVeryRare
- | MsgMeleePowerfulWe
- | MsgMeleePowerfulUs
- | MsgMeleeInterestingWe
- | MsgMeleeInterestingUs
- | MsgMelee
- | MsgMeleeUs
- | MsgDone
- | MsgAtFeetMajor
- | MsgAtFeet
- | MsgNumeric
- | MsgSpam
- | MsgMacro
- | MsgRunStop
- | MsgPrompt
- | MsgPromptFocus
- | MsgAlert
- | MsgStopPlayback
- interruptsRunning :: MsgClass -> Bool
- disturbsResting :: MsgClass -> Bool
- data Report
- nullReport :: Report -> Bool
- consReport :: Msg -> Report -> Report
- renderReport :: Report -> AttrLine
- anyInReport :: (MsgClass -> Bool) -> Report -> Bool
- data History
- newReport :: History -> Report
- emptyHistory :: Int -> History
- addToReport :: History -> Msg -> Int -> Time -> (History, Bool)
- archiveReport :: History -> History
- lengthHistory :: History -> Int
- renderHistory :: History -> [AttrLine]
- isSavedToHistory :: MsgClass -> Bool
- isDisplayed :: MsgClass -> Bool
- bindsPronouns :: MsgClass -> Bool
- msgColor :: MsgClass -> Color
- type UAttrLine = Vector Word32
- data RepMsgN
- uToAttrLine :: UAttrLine -> AttrLine
- attrLineToU :: AttrLine -> UAttrLine
- emptyReport :: Report
- snocReport :: Report -> Msg -> Int -> Report
- renderWholeReport :: Report -> AttrLine
- renderRepetition :: RepMsgN -> AttrLine
- scrapRepetition :: History -> Maybe History
- renderTimeReport :: Time -> Report -> [AttrLine]
Msg
The type of a single game message.
Instances
Eq Msg Source # | |
Show Msg Source # | |
Generic Msg Source # | |
Binary Msg Source # | |
type Rep Msg Source # | |
Defined in Game.LambdaHack.Client.UI.Msg type Rep Msg = D1 ('MetaData "Msg" "Game.LambdaHack.Client.UI.Msg" "LambdaHack-0.9.5.0-4ovYxwv1jih9UUX4cyhTOG" 'False) (C1 ('MetaCons "Msg" 'PrefixI 'True) (S1 ('MetaSel ('Just "msgLine") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 AttrLine) :*: S1 ('MetaSel ('Just "msgClass") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 MsgClass))) |
Constructors
Instances
Enum MsgClass Source # | |
Defined in Game.LambdaHack.Client.UI.Msg | |
Eq MsgClass Source # | |
Read MsgClass Source # | |
Show MsgClass Source # | |
Generic MsgClass Source # | |
NFData MsgClass Source # | |
Defined in Game.LambdaHack.Client.UI.Msg | |
Binary MsgClass Source # | |
type Rep MsgClass Source # | |
Defined in Game.LambdaHack.Client.UI.Msg type Rep MsgClass = D1 ('MetaData "MsgClass" "Game.LambdaHack.Client.UI.Msg" "LambdaHack-0.9.5.0-4ovYxwv1jih9UUX4cyhTOG" 'False) (((((C1 ('MetaCons "MsgAdmin" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "MsgBecome" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgNoLonger" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "MsgLongerUs" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "MsgLonger" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgItemCreation" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "MsgItemDestruction" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "MsgDeathGood" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgDeathBad" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "MsgDeath" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgDeathThreat" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MsgLeader" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgDiplomacy" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "MsgOutcome" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "MsgPlot" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgLandscape" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "MsgTileDisco" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgItemDisco" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MsgActorSpot" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgFirstEnemySpot" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "MsgItemSpot" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "MsgItemMove" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgAction" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "MsgActionMinor" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgEffectMajor" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MsgEffect" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgEffectMinor" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "MsgMisc" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "MsgHeardClose" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgHeard" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "MsgFocus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgWarning" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MsgRangedPowerfulWe" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgRangedPowerfulUs" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "MsgRanged" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "MsgRangedUs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgRare" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "MsgVeryRare" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgMeleePowerfulWe" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MsgMeleePowerfulUs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgMeleeInterestingWe" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "MsgMeleeInterestingUs" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "MsgMelee" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgMeleeUs" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "MsgDone" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgAtFeetMajor" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MsgAtFeet" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgNumeric" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "MsgSpam" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "MsgMacro" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgRunStop" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "MsgPrompt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgPromptFocus" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MsgAlert" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MsgStopPlayback" 'PrefixI 'False) (U1 :: Type -> Type))))))) |
interruptsRunning :: MsgClass -> Bool Source #
disturbsResting :: MsgClass -> Bool Source #
Report
The set of messages, with repetitions, to show at the screen at once.
Instances
nullReport :: Report -> Bool Source #
Test if the set of messages is empty.
renderReport :: Report -> AttrLine Source #
Render a report as a (possibly very long) AttrLine
. Filter out
messages not meant for display.
History
The history of reports. This is a ring buffer of the given length containing old archived history and two most recent reports stored separately.
Instances
Show History Source # | |
Generic History Source # | |
Binary History Source # | |
type Rep History Source # | |
Defined in Game.LambdaHack.Client.UI.Msg type Rep History = D1 ('MetaData "History" "Game.LambdaHack.Client.UI.Msg" "LambdaHack-0.9.5.0-4ovYxwv1jih9UUX4cyhTOG" 'False) (C1 ('MetaCons "History" 'PrefixI 'True) ((S1 ('MetaSel ('Just "newReport") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Report) :*: S1 ('MetaSel ('Just "newTime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Time)) :*: (S1 ('MetaSel ('Just "oldReport") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Report) :*: (S1 ('MetaSel ('Just "oldTime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Time) :*: S1 ('MetaSel ('Just "archivedHistory") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (RingBuffer UAttrLine)))))) |
emptyHistory :: Int -> History Source #
Empty history of the given maximal length.
addToReport :: History -> Msg -> Int -> Time -> (History, Bool) Source #
Add a message to the new report of history, eliminating a possible duplicate and noting its existence in the result.
archiveReport :: History -> History Source #
Archive old report to history, filtering out messages with 0 duplicates and prompts. Set up new report with a new timestamp.
lengthHistory :: History -> Int Source #
renderHistory :: History -> [AttrLine] Source #
Render history as many lines of text. New report is not rendered. It's expected to be empty when history is shown.
Internal operations
isSavedToHistory :: MsgClass -> Bool Source #
isDisplayed :: MsgClass -> Bool Source #
bindsPronouns :: MsgClass -> Bool Source #
Instances
Show RepMsgN Source # | |
Generic RepMsgN Source # | |
Binary RepMsgN Source # | |
type Rep RepMsgN Source # | |
Defined in Game.LambdaHack.Client.UI.Msg type Rep RepMsgN = D1 ('MetaData "RepMsgN" "Game.LambdaHack.Client.UI.Msg" "LambdaHack-0.9.5.0-4ovYxwv1jih9UUX4cyhTOG" 'False) (C1 ('MetaCons "RepMsgN" 'PrefixI 'True) (S1 ('MetaSel ('Just "repMsg") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Msg) :*: S1 ('MetaSel ('Just "_repN") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Int))) |
uToAttrLine :: UAttrLine -> AttrLine Source #
attrLineToU :: AttrLine -> UAttrLine Source #
emptyReport :: Report Source #
Empty set of messages.
renderRepetition :: RepMsgN -> AttrLine Source #