Safe Haskell | None |
---|---|
Language | Haskell2010 |
Game messages displayed on top of the screen for the player to read.
- makePhrase :: [Part] -> Text
- makeSentence :: [Part] -> Text
- type Msg = Text
- (<>) :: Monoid m => m -> m -> m
- (<+>) :: Text -> Text -> Text
- tshow :: Show a => a -> Text
- toWidth :: Int -> Text -> Text
- moreMsg :: Msg
- endMsg :: Msg
- yesnoMsg :: Msg
- truncateMsg :: X -> Text -> Text
- data Report
- emptyReport :: Report
- nullReport :: Report -> Bool
- singletonReport :: Msg -> Report
- addMsg :: Report -> Msg -> Report
- prependMsg :: Msg -> Report -> Report
- splitReport :: X -> Report -> Overlay
- renderReport :: Report -> Text
- findInReport :: (ByteString -> Bool) -> Report -> Maybe ByteString
- lastMsgOfReport :: Report -> (ByteString, Report)
- data History
- emptyHistory :: Int -> History
- lengthHistory :: History -> Int
- addReport :: History -> Time -> Report -> History
- renderHistory :: History -> Overlay
- lastReportOfHistory :: History -> Maybe Report
- data Overlay
- emptyOverlay :: Overlay
- truncateToOverlay :: Text -> Overlay
- toOverlay :: [Text] -> Overlay
- data Slideshow
- splitOverlay :: Maybe Bool -> Y -> Overlay -> Overlay -> Slideshow
- toSlideshow :: Maybe Bool -> [[Text]] -> Slideshow
- encodeLine :: [AttrChar] -> ScreenLine
- encodeOverlay :: [[AttrChar]] -> Overlay
- type ScreenLine = Vector Int32
- toScreenLine :: Text -> ScreenLine
- splitText :: X -> Text -> [Text]
Documentation
makePhrase :: [Part] -> Text Source
Re-exported English phrase creation functions, applied to default irregular word sets.
makeSentence :: [Part] -> Text Source
Re-exported English phrase creation functions, applied to default irregular word sets.
truncateMsg :: X -> Text -> Text Source
Add a space at the message end, for display overlayed over the level map. Also trims (does not wrap!) too long lines. In case of newlines, displays only the first line, but marks the message as partial.
The type of a set of messages to show at the screen at once.
Empty set of messages.
nullReport :: Report -> Bool Source
Test if the set of messages is empty.
singletonReport :: Msg -> Report Source
Construct a singleton set of messages.
prependMsg :: Msg -> Report -> Report Source
splitReport :: X -> Report -> Overlay Source
Split a messages into chunks that fit in one line. We assume the width of the messages line is the same as of level map.
renderReport :: Report -> Text Source
Render a report as a (possibly very long) string.
findInReport :: (ByteString -> Bool) -> Report -> Maybe ByteString Source
lastMsgOfReport :: Report -> (ByteString, Report) Source
The history of reports. This is a ring buffer of the given length
emptyHistory :: Int -> History Source
Empty history of reports of the given maximal length.
lengthHistory :: History -> Int Source
addReport :: History -> Time -> Report -> History Source
Add a report to history, handling repetitions.
renderHistory :: History -> Overlay Source
Render history as many lines of text, wrapping if necessary.
A series of screen lines that may or may not fit the width nor height of the screen. An overlay may be transformed by adding the first line and/or by splitting into a slideshow of smaller overlays.
truncateToOverlay :: Text -> Overlay Source
A few overlays, displayed one by one upon keypress.
When displayed, they are trimmed, not wrapped
and any lines below the lower screen edge are not visible.
If the first pair element is not Nothing
, the overlay is displayed
over a blank screen, including the bottom lines. The boolean flag
then indicates whether to start at the topmost screenful or bottommost.
splitOverlay :: Maybe Bool -> Y -> Overlay -> Overlay -> Slideshow Source
Split an overlay into a slideshow in which each overlay,
prefixed by msg
and postfixed by moreMsg
except for the last one,
fits on the screen wrt height (but lines may be too wide).
toSlideshow :: Maybe Bool -> [[Text]] -> Slideshow Source
Declare the list of raw overlays to be fit for display on the screen.
In particular, current Report
is eiter empty or unimportant
or contained in the overlays and if any vertical or horizontal
trimming of the overlays happens, this is intended.
encodeLine :: [AttrChar] -> ScreenLine Source
encodeOverlay :: [[AttrChar]] -> Overlay Source
type ScreenLine = Vector Int32 Source
toScreenLine :: Text -> ScreenLine Source