Skip to content

Low level Haskell bindings to the BearLibTerminal graphics library.

License

Notifications You must be signed in to change notification settings

PPKFS/bearlibterminal-hs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hackage Version

bearlibterminal-hs -

Also available on Hackage.

Low-level Haskell bindings to the BearLibTerminal graphics library, primarily for roguelike games.

Description

The design overview of the original library is excellent to get an understanding of how things work: http://foo.wyrd.name/en:bearlibterminal:design.

Getting Started

Installing

  • 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 setting LD_LIBRARY_PATH or DYLD_LIBRARY_PATH).
  • Add bearlibterminal to your *.cabal build-depends.
  • Enjoy.

How can I do things?

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 Ints. Higher level colour functions are available in roguefunctor.
  • terminalComposition takes a TerminalCompositionMode rather than raw integers.
  • Events read by terminal_peek, terminal_read are returned as raw integers (terminalPeekCode) and as Keycodes (terminalPeek).

This is a bit too low level for me...

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.

Screenshots from the Omni demo

screenshot screenshot

About

Low level Haskell bindings to the BearLibTerminal graphics library.

Resources

License

Stars

Watchers

Forks

Packages

No packages published