| Stability | experimental |
|---|---|
| Safe Haskell | None |
| Language | Haskell2010 |
Apecs.Reactive
Description
Reactive stores module, still experimental.
Adds the Reactive r s store, which when wrapped around store s, will call the react on its r.
Show c => Reactive (Printer c) (Map c) will print a message every time a c value is set.
Enum c => Reactive (EnumMap c) (Map c) allows you to look up entities by component value.
Use e.g. rget >>= mapLookup True to retrieve a list of entities that have a True component.
Synopsis
- type family ReactElem r
- class Monad m => Reacts m r where
- data Reactive r s = Reactive r s
- rget :: forall w m r s. (Component (ReactElem r), Has w m (ReactElem r), Storage (ReactElem r) ~ Reactive r s) => SystemT w m r
- data Printer c = Printer
- newtype EnumMap c = EnumMap (IORef (IntMap IntSet))
- mapLookup :: Enum c => EnumMap c -> c -> System w [Entity]
Documentation
type family ReactElem r Source #
Analogous to Elem, but for Reacts instances.
For a Reactive r s to be valid, ReactElem r = Elem s
class Monad m => Reacts m r where Source #
Class required by Reactive.
Given some r and update information about some component, will run a side-effect in monad m.
Note that there are also instances for (,).
Wrapper for reactivity around some store s.
Constructors
| Reactive r s |
Instances
| ExplMembers m s => ExplMembers m (Reactive r s) Source # | |
Defined in Apecs.Reactive | |
| (Reacts m r, ExplDestroy m s, ExplGet m s, Elem s ~ ReactElem r) => ExplDestroy m (Reactive r s) Source # | |
Defined in Apecs.Reactive Methods explDestroy :: Reactive r s -> Int -> m () Source # | |
| (Reacts m r, ExplSet m s, ExplGet m s, Elem s ~ ReactElem r) => ExplSet m (Reactive r s) Source # | |
| ExplGet m s => ExplGet m (Reactive r s) Source # | |
| (Reacts m r, ExplInit m s) => ExplInit m (Reactive r s) Source # | |
Defined in Apecs.Reactive | |
| type Elem (Reactive r s) Source # | |
Defined in Apecs.Reactive | |
rget :: forall w m r s. (Component (ReactElem r), Has w m (ReactElem r), Storage (ReactElem r) ~ Reactive r s) => SystemT w m r Source #
Reads r from the game world.
Prints a message to stdout every time a component is updated.
Constructors
| Printer |