LambdaHack-0.11.0.1: A game engine library for tactical squad ASCII roguelike dungeon crawlers
Safe HaskellSafe-Inferred
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.