module Game.LambdaHack.Client.UI.MsgM
( msgAdd, promptAdd, promptAddAttr, recordHistory
) where
import Prelude ()
import Game.LambdaHack.Common.Prelude
import Game.LambdaHack.Client.UI.MonadClientUI
import Game.LambdaHack.Client.UI.Msg
import Game.LambdaHack.Client.UI.Overlay
import Game.LambdaHack.Client.UI.SessionUI
import Game.LambdaHack.Common.MonadStateRead
import Game.LambdaHack.Common.State
msgAdd :: MonadClientUI m => Text -> m ()
msgAdd msg = modifySession $ \sess ->
sess {_sreport = snocReport (_sreport sess) (toMsg $ textToAL msg)}
promptAdd :: MonadClientUI m => Text -> m ()
promptAdd msg = modifySession $ \sess ->
sess {_sreport = snocReport (_sreport sess) (toPrompt $ textToAL msg)}
promptAddAttr :: MonadClientUI m => AttrLine -> m ()
promptAddAttr msg = modifySession $ \sess ->
sess {_sreport = snocReport (_sreport sess) (toPrompt msg)}
recordHistory :: MonadClientUI m => m ()
recordHistory = do
time <- getsState stime
SessionUI{_sreport, shistory} <- getSession
unless (nullReport _sreport) $ do
let nhistory = addReport shistory time _sreport
modifySession $ \sess -> sess { _sreport = emptyReport
, shistory = nhistory }