gore-and-ash-1.2.1.0: src/Game/GoreAndAsh/Core.hs
{-|
Module : Game.GoreAndAsh.Core
Description : Engine Core that controls modules execution
Copyright : (c) Anton Gushcha, 2015-2016
Oganyan Levon, 2016
License : BSD3
Maintainer : ncrashed@gmail.com
Stability : experimental
Portability : POSIX
The core of all engine. It contains generic arrow operations and helpers,
definition of core module system, game session declaration and utilities
to control main loop of application.
-}
module Game.GoreAndAsh.Core(
-- * Reexports of used time types
GameTime
, GameSession
, NominalDiffTime
-- * Game loop control
, GameState
, stepGame
, newGameState
, newGameStateM
, cleanupGameState
-- * Core module definition
, GameMonadT
, GameModule(..)
, ModuleStack
-- * Arrow combinators and helpers
, GameWire
-- ** Lifting monad to arrow
, liftGameMonad
, liftGameMonad1
, liftGameMonad2
, liftGameMonad3
, liftGameMonad4
, liftGameMonadOnce
, liftGameMonad1Once
, liftGameMonad2Once
, liftGameMonad3Once
, liftGameMonad4Once
-- ** Event functions
, once'
, mapE
, filterE
, filterEG
, filterEGM
, filterJustE
, filterJustLE
, liftGameMonadEvent1
, changes
-- ** Helpers
, stateWire
, chainWires
, dispense
, dDispense
, withInit
, nothingInhibit
-- ** Time utilities
, deltaTime
) where
import Game.GoreAndAsh.Core.Arrow as X
import Game.GoreAndAsh.Core.Monad as X
import Game.GoreAndAsh.Core.Session as X
import Game.GoreAndAsh.Core.State as X