LambdaHack-0.2.1: A roguelike game engine in early and very active development

Safe HaskellSafe-Infered

Game.LambdaHack.Display.Gtk

Contents

Description

Text frontend based on Gtk.

Synopsis

Session data type for the frontend

data FrontendSession Source

Session data maintained by the frontend.

The output and input operations

display :: FrontendSession -> Bool -> Bool -> Maybe SingleFrame -> IO ()Source

Add a frame to be drawn.

nextEvent :: FrontendSession -> Maybe Bool -> IO (Key, Modifier)Source

Input key via the frontend. Fail if there is no frame to show to the player as a prompt for the keypress.

promptGetKey :: FrontendSession -> [(Key, Modifier)] -> SingleFrame -> IO (Key, Modifier)Source

Display a prompt, wait for any of the specified keys (for any key, if the list is empty). Repeat if an unexpected key received. Starts in Push or None mode, stop in None mode. Spends most time waiting for a key, so not performance critical, so does not need optimization.

Frontend administration tools

frontendName :: StringSource

The name of the frontend.

startup :: String -> (FrontendSession -> IO ()) -> IO ()Source

Spawns the gtk input and output thread, which spawns all the other required threads. We create a separate thread for gtk to minimize communication with the heavy main thread. The other threads have to be spawned after gtk is initialized, because they call postGUIAsync, and need sview and stags.

shutdown :: FrontendSession -> IO ()Source

Shuts down the frontend cleanly.