LambdaHack-0.11.0.0: A game engine library for tactical squad ASCII roguelike dungeon crawlers
Safe HaskellNone
LanguageHaskell2010

Game.LambdaHack.Client.UI.Frontend

Description

Display game data on the screen and receive user input using one of the available raw frontends and derived operations.

Synopsis

Connection and initialization

data FrontReq :: Type -> Type where Source #

The instructions sent by clients to the raw frontend, indexed by the returned value.

Constructors

FrontFrame :: Frame -> FrontReq ()

Show a frame.

FrontDelay :: Int -> FrontReq ()

Perform an explicit delay of the given length.

FrontKey :: [KM] -> Frame -> FrontReq KMP

Flush frames, display a frame and ask for a keypress.

FrontPressed :: FrontReq Bool

Tell if a keypress is pending.

FrontDiscardKey :: FrontReq ()

Discard a single key in the queue, if any.

FrontResetKeys :: FrontReq ()

Discard all keys in the queue.

FrontShutdown :: FrontReq ()

Shut the frontend down.

FrontPrintScreen :: FrontReq ()

Take screenshot.

newtype ChanFrontend Source #

Connection channel between a frontend and a client. Frontend acts as a server, serving keys, etc., when given frames to display.

Constructors

ChanFrontend (forall a. FrontReq a -> IO a) 

chanFrontendIO :: ScreenContent -> ClientOptions -> IO ChanFrontend Source #

Initialize the frontend chosen by the player via client options.

Re-exported part of the raw frontend

frontendName :: ClientOptions -> String Source #

The name of the chosen frontend.

Internal operations

data FrontSetup Source #

Machinery allocated for an individual frontend at its startup, unchanged for its lifetime.