--------------------------------------------------------------------------------
-- |
-- Module : Terminal.Game
-- Copyright : © 2017-2018 Francesco Ariis
-- License : GPLv3 (see LICENSE file)
--
-- Maintainer : Francesco Ariis <fa-ml@ariis.it>
-- Stability : provisional
-- Portability : portable
--
-- Machinery and utilities for 2D terminal games.
--
--------------------------------------------------------------------------------
-- Basic col-on-black ASCII terminal, operations.
-- Only module to be imported.
-- todo color [release]
-- todo resize screen corruption [grave]
-- add docs [release]
module Terminal.Game ( -- * Game Loop
gameLoop,
-- * Plane
Plane, -- types
Coords, Width, Height,
stringPlane, -- crea
blankPlane, addVitrum,
copyPlane, pastePlane, -- slice
planeSize, paperPlane, -- info
-- * Draw
(%), (&), cell, -- draw
box, textBox,
-- * Animations
Animation, Loop(..), -- types
creaAni,
tick, reset, -- operate
-- xxx metti fetchframe in
-- documentation
-- e anche isexpired
getFrames,
encodeAni, -- serialise
decodeAni,
-- * Timers
Timed, -- types
ExpBehaviour(..),
creaTimer, -- crea
creaBoolTimer,
fetchFrame, isExpired, -- operate
-- * Utils
screenSize
)
where
import Terminal.Game.GameLoop
import Terminal.Game.Plane
import Terminal.Game.Draw
-- xxx rivedi gli export di animation, encapsula tutto il possibile
import Terminal.Game.Animation
import Terminal.Game.Timer
import Terminal.Game.Utils
-- todo text deve essere gestito da una cosa smart, pensa a pp leijin
-- todo [post-first-release] setTitle hSupportsANSI bold? italics? intensity
-- todo geekosaur threaded shit bug
-- geekosaur f-a, a. heh. so the thoguht I had turned out to
-- be correct:
-- Control.Concurent.rtsSupportsBoundThreads (because
-- green threads can't be usefully bound)
-- x hiratara
-- [~hiratara@240f:7:4708:1:47a:b8c4:d18a:d063]
-- has left Ping timeout: 276 seconds [#haskell]
-- geekosaur so if that produces True, it's using the
-- threaded runtime; if False, you can say
-- something useful instead of hanging