minilight-0.3.0: A SDL2-based graphics library, batteries-included.

Safe HaskellNone
LanguageHaskell2010

MiniLight

Contents

Description

MiniLight module exports all basic concepts and oprations except for concrete components.

Synopsis

Documentation

runLightT :: (MonadIO m, MonadMask m) => LightT LightEnv m a -> m a Source #

Run a Light monad.

data LoopConfig Source #

Use defConfig for a default setting.

Constructors

LoopConfig 

Fields

defConfig :: LoopConfig Source #

Default configurations for the mainloop. You need to set componentResolver if you use a component.

runMainloop Source #

Arguments

:: (HasLightEnv env, HasLightEnv env', HasLoopEnv env', HasLoaderEnv env', MonadIO m, MonadMask m) 
=> (env -> LoopEnv -> LoaderEnv -> env')

Environment conversion

-> LoopConfig

Loop config

-> s

Initial state

-> (s -> LightT env' m s)

A function called in every loop

-> LightT env m () 

Run a mainloop. In a mainloop, components and events are managed.

Components in a mainloop: draw ~ update ~ (user-defined function) ~ event handling

type MiniLoop = LightT LoopState IO Source #

Type synonym to the minimal type of the mainloop

runMiniloop :: LoopConfig -> s -> (s -> MiniLoop s) -> MiniLight () Source #

Same as runMainloop but fixing the type.

Orphan instances

Hashable Scancode Source # 
Instance details

Methods

hashWithSalt :: Int -> Scancode -> Int #

hash :: Scancode -> Int #

HasLightEnv env' => HasLightEnv (env, env') Source # 
Instance details

Methods

lightEnv :: Lens' (env, env') LightEnv Source #

_fontCache :: Lens' (env, env') FontMap Source #

_logger :: Lens' (env, env') LogQueue Source #

_renderer :: Lens' (env, env') Renderer Source #

HasLoopEnv env' => HasLoopEnv (env, env') Source # 
Instance details

Methods

loopEnv :: Lens' (env, env') LoopEnv Source #

_events :: Lens' (env, env') (MVar [Event]) Source #

_keyStates :: Lens' (env, env') (HashMap Scancode Int) Source #

_signalQueue :: Lens' (env, env') (IORef [Event]) Source #

HasComponentEnv (Text, env) Source # 
Instance details

Methods

uidL :: Lens' (Text, env) Text Source #

HasLoaderEnv env' => HasLoaderEnv (env, env') Source # 
Instance details

Methods

loaderEnv :: Lens' (env, env') LoaderEnv Source #

_appConfig :: Lens' (env, env') (IORef AppConfig) Source #

_registry :: Lens' (env, env') (Registry Component) Source #