| 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 :: AttrLine -> Msg
- toPrompt :: AttrLine -> Msg
- data Report
- nullReport :: Report -> Bool
- consReport :: Msg -> Report -> Report
- renderReport :: Report -> AttrLine
- findInReport :: (AttrLine -> Bool) -> Report -> Maybe Msg
- data History
- newReport :: History -> Report
- emptyHistory :: Int -> History
- addToReport :: History -> Msg -> Int -> (History, Bool)
- archiveReport :: History -> Time -> History
- lengthHistory :: History -> Int
- renderHistory :: History -> [AttrLine]
- type UAttrLine = Vector Word32
- data RepMsgN
- uToAttrLine :: UAttrLine -> AttrLine
- attrLineToU :: AttrLine -> UAttrLine
- emptyReport :: Report
- snocReport :: Report -> Msg -> Int -> Report
- renderRepetition :: RepMsgN -> AttrLine
- scrapRepetition :: History -> Maybe History
- renderTimeReport :: Time -> Report -> [AttrLine]
Msg
The type of a single game message.
Instances
| Eq Msg # | |
| Show Msg # | |
| Generic Msg # | |
| Binary Msg # | |
| type Rep Msg # | |
Defined in Game.LambdaHack.Client.UI.Msg type Rep Msg = D1 (MetaData "Msg" "Game.LambdaHack.Client.UI.Msg" "LambdaHack-0.8.3.0-1hn0NFDS4ux6qD3ggO7yse" False) (C1 (MetaCons "Msg" PrefixI True) (S1 (MetaSel (Just "msgLine") NoSourceUnpackedness NoSourceStrictness DecidedStrict) (Rec0 AttrLine) :*: S1 (MetaSel (Just "msgHist") NoSourceUnpackedness NoSourceStrictness DecidedStrict) (Rec0 Bool))) | |
Report
The set of messages, with repetitions, to show at the screen at once.
nullReport :: Report -> Bool #
Test if the set of messages is empty.
consReport :: Msg -> Report -> Report #
Add a message to the start of report.
renderReport :: Report -> AttrLine #
Render a report as a (possibly very long) AttrLine.
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 # | |
| Generic History # | |
| Binary History # | |
| type Rep History # | |
Defined in Game.LambdaHack.Client.UI.Msg type Rep History = D1 (MetaData "History" "Game.LambdaHack.Client.UI.Msg" "LambdaHack-0.8.3.0-1hn0NFDS4ux6qD3ggO7yse" 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 #
Empty history of the given maximal length.
addToReport :: History -> Msg -> Int -> (History, Bool) #
Add a message to the new report of history, eliminating a possible duplicate and noting its existence in the result.
archiveReport :: History -> Time -> History #
Archive old report to history, filtering out prompts. Set up new report with a new timestamp.
lengthHistory :: History -> Int #
renderHistory :: History -> [AttrLine] #
Render history as many lines of text. New report is not rendered. It's expected to be empty when history is shown.
Internal operations
Instances
| Show RepMsgN # | |
| Generic RepMsgN # | |
| Binary RepMsgN # | |
| type Rep RepMsgN # | |
Defined in Game.LambdaHack.Client.UI.Msg type Rep RepMsgN = D1 (MetaData "RepMsgN" "Game.LambdaHack.Client.UI.Msg" "LambdaHack-0.8.3.0-1hn0NFDS4ux6qD3ggO7yse" 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 #
attrLineToU :: AttrLine -> UAttrLine #
emptyReport :: Report #
Empty set of messages.
renderRepetition :: RepMsgN -> AttrLine #
scrapRepetition :: History -> Maybe History #
renderTimeReport :: Time -> Report -> [AttrLine] #