Also available on Hackage.
Low-level Haskell bindings to the BearLibTerminal graphics library, primarily for roguelike games.
The design overview of the original library is excellent to get an understanding of how things work: http://foo.wyrd.name/en:bearlibterminal:design.
- This library assumes you have built the main
BearLibTerminal
library (or downloaded the precompiled binaries available from http://foo.wyrd.name/en:bearlibterminal) and your build tool can find it (e.g. by settingLD_LIBRARY_PATH
orDYLD_LIBRARY_PATH
). - Add
bearlibterminal
to your*.cabal
build-depends
. - Enjoy.
This is pretty much a 1-to-1 mapping of the original BLT API, with some marshalling of types and wrappers around function calls that take C strings (these are offered in CString
, Text
, and String
flavours).
Every API call is available as both a raw FFI call (c_terminal_snake_case
) and as a monadic MonadIO m => ... m a
function.
Other notes:
- Colours are still simply 4-byte
Int
s. Higher level colour functions are available inroguefunctor
. terminalComposition
takes aTerminalCompositionMode
rather than raw integers.- Events read by
terminal_peek
,terminal_read
are returned as raw integers (terminalPeekCode
) and asKeycode
s (terminalPeek
).
Check out the Haskell roguelike toolkit library roguefunctor, which is the high-level, opinionated wrapper around this library with nicer abstractions for positions, colours, config options, event handling, rendering, and so forth.