gore-and-ash-sdl-2.1.1.0: Gore&Ash core module for integration with SDL library

Copyright(c) Anton Gushcha, 2015-2016
LicenseBSD3
Maintainerncrashed@gmail.com
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
LanguageHaskell2010

Game.GoreAndAsh.SDL.Module

Contents

Description

The module contains declaration of monad transformer of the core module and instance for GameModule class.

Synopsis

Documentation

newtype SDLT s m a Source #

Monad transformer of SDL core module.

s
- State of next core module in modules chain;
m
- Next monad in modules monad stack;
a
- Type of result value;

How to embed module:

type AppStack = ModuleStack [SDLT, ... other modules ... ] IO

newtype AppMonad a = AppMonad (AppStack a)
  deriving (Functor, Applicative, Monad, MonadFix, MonadIO, MonadThrow, MonadCatch, MonadSDL)

The module is NOT pure within first phase (see ModuleStack docs), therefore currently only IO end monad can handler the module.

Constructors

SDLT 

Fields

Instances

MonadBase IO m => MonadBase IO (SDLT s m) Source # 

Methods

liftBase :: IO α -> SDLT s m α

MonadError e m => MonadError e (SDLT s m) Source # 

Methods

throwError :: e -> SDLT s m a

catchError :: SDLT s m a -> (e -> SDLT s m a) -> SDLT s m a

MonadTrans (SDLT s) Source # 

Methods

lift :: Monad m => m a -> SDLT s m a #

Monad m => MonadState (SDLState s) (SDLT s m) Source # 

Methods

get :: SDLT s m (SDLState s)

put :: SDLState s -> SDLT s m ()

state :: (SDLState s -> (a, SDLState s)) -> SDLT s m a

Monad m => Monad (SDLT s m) Source # 

Methods

(>>=) :: SDLT s m a -> (a -> SDLT s m b) -> SDLT s m b #

(>>) :: SDLT s m a -> SDLT s m b -> SDLT s m b #

return :: a -> SDLT s m a #

fail :: String -> SDLT s m a #

Functor m => Functor (SDLT s m) Source # 

Methods

fmap :: (a -> b) -> SDLT s m a -> SDLT s m b #

(<$) :: a -> SDLT s m b -> SDLT s m a #

MonadFix m => MonadFix (SDLT s m) Source # 

Methods

mfix :: (a -> SDLT s m a) -> SDLT s m a #

Monad m => Applicative (SDLT s m) Source # 

Methods

pure :: a -> SDLT s m a #

(<*>) :: SDLT s m (a -> b) -> SDLT s m a -> SDLT s m b #

(*>) :: SDLT s m a -> SDLT s m b -> SDLT s m b #

(<*) :: SDLT s m a -> SDLT s m b -> SDLT s m a #

MonadIO m => MonadIO (SDLT s m) Source # 

Methods

liftIO :: IO a -> SDLT s m a #

MonadThrow m => MonadThrow (SDLT s m) Source # 

Methods

throwM :: Exception e => e -> SDLT s m a

MonadMask m => MonadMask (SDLT s m) Source # 

Methods

mask :: ((forall a. SDLT s m a -> SDLT s m a) -> SDLT s m b) -> SDLT s m b

uninterruptibleMask :: ((forall a. SDLT s m a -> SDLT s m a) -> SDLT s m b) -> SDLT s m b

MonadCatch m => MonadCatch (SDLT s m) Source # 

Methods

catch :: Exception e => SDLT s m a -> (e -> SDLT s m a) -> SDLT s m a

MonadResource m => MonadResource (SDLT s m) Source # 

Methods

liftResourceT :: ResourceT IO a -> SDLT s m a

(MonadIO m, MonadThrow m) => MonadSDL (SDLT s m) Source # 

Methods

sdlCreateWindowM :: WindowName -> Text -> WindowConfig -> RendererConfig -> SDLT s m (Window, Renderer) Source #

sdlGetWindowM :: WindowName -> SDLT s m (Maybe (Window, Renderer)) Source #

sdlDestroyWindowM :: WindowName -> SDLT s m () Source #

sdlSetBackColor :: WindowName -> Maybe (V4 Word8) -> SDLT s m () Source #

sdlCreateContext :: WindowName -> SDLT s m () Source #

sdlMakeCurrent :: WindowName -> SDLT s m () Source #

sdlWindowShownEventsM :: SDLT s m (Seq WindowShownEventData) Source #

sdlWindowHiddenEventsM :: SDLT s m (Seq WindowHiddenEventData) Source #

sdlWindowExposedEventsM :: SDLT s m (Seq WindowExposedEventData) Source #

sdlWindowMovedEventsM :: SDLT s m (Seq WindowMovedEventData) Source #

sdlWindowResizedEventsM :: SDLT s m (Seq WindowResizedEventData) Source #

sdlWindowSizeChangedEventsM :: SDLT s m (Seq WindowSizeChangedEventData) Source #

sdlWindowMinimizedEventsM :: SDLT s m (Seq WindowMinimizedEventData) Source #

sdlWindowMaximizedEventsM :: SDLT s m (Seq WindowMaximizedEventData) Source #

sdlWindowRestoredEventsM :: SDLT s m (Seq WindowRestoredEventData) Source #

sdlWindowGainedMouseFocusEventsM :: SDLT s m (Seq WindowGainedMouseFocusEventData) Source #

sdlWindowLostMouseFocusEventsM :: SDLT s m (Seq WindowLostMouseFocusEventData) Source #

sdlWindowGainedKeyboardFocusEventsM :: SDLT s m (Seq WindowGainedKeyboardFocusEventData) Source #

sdlWindowLostKeyboardFocusEventsM :: SDLT s m (Seq WindowLostKeyboardFocusEventData) Source #

sdlWindowClosedEventsM :: SDLT s m (Seq WindowClosedEventData) Source #

sdlKeyboardEventsM :: SDLT s m (Seq KeyboardEventData) Source #

sdlTextEditingEventsM :: SDLT s m (Seq TextEditingEventData) Source #

sdlTextInputEventsM :: SDLT s m (Seq TextInputEventData) Source #

sdlMouseMotionEventsM :: SDLT s m (Seq MouseMotionEventData) Source #

sdlMouseButtonEventsM :: SDLT s m (Seq MouseButtonEventData) Source #

sdlMouseWheelEventsM :: SDLT s m (Seq MouseWheelEventData) Source #

sdlJoyAxisEventsM :: SDLT s m (Seq JoyAxisEventData) Source #

sdlJoyBallEventsM :: SDLT s m (Seq JoyBallEventData) Source #

sdlJoyHatEventsM :: SDLT s m (Seq JoyHatEventData) Source #

sdlJoyButtonEventsM :: SDLT s m (Seq JoyButtonEventData) Source #

sdlJoyDeviceEventsM :: SDLT s m (Seq JoyDeviceEventData) Source #

sdlControllerAxisEventsM :: SDLT s m (Seq ControllerAxisEventData) Source #

sdlControllerButtonEventsM :: SDLT s m (Seq ControllerButtonEventData) Source #

sdlControllerDeviceEventsM :: SDLT s m (Seq ControllerDeviceEventData) Source #

sdlQuitEventM :: SDLT s m Bool Source #

sdlUserEventsM :: SDLT s m (Seq UserEventData) Source #

sdlSysWMEventsM :: SDLT s m (Seq SysWMEventData) Source #

sdlTouchFingerEventsM :: SDLT s m (Seq TouchFingerEventData) Source #

sdlMultiGestureEventsM :: SDLT s m (Seq MultiGestureEventData) Source #

sdlDollarGestureEventsM :: SDLT s m (Seq DollarGestureEventData) Source #

sdlDropEventsM :: SDLT s m (Seq DropEventData) Source #

sdlClipboardUpdateEventsM :: SDLT s m (Seq ClipboardUpdateEventData) Source #

type ModuleState (SDLT s m) Source # 
type ModuleState (SDLT s m) = SDLState s

Orphan instances

GameModule m s => GameModule (SDLT s m) (SDLState s) Source # 

Associated Types

type ModuleState (SDLT s m :: * -> *) :: *

Methods

runModule :: MonadIO m' => SDLT s m a -> SDLState s -> m' (a, SDLState s)

newModuleState :: MonadIO m' => m' (SDLState s)

withModule :: Proxy (* -> *) (SDLT s m) -> IO a -> IO a

cleanupModule :: SDLState s -> IO ()