Copyright | (c) Anton Gushcha, 2015-2016 |
---|---|
License | BSD3 |
Maintainer | ncrashed@gmail.com |
Stability | experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
- data GameWireIndexed m i a b = GameWireIndexed {
- indexedId :: i
- indexedWire :: GameWire m a b
- type GameActor m i a b = GameMonadT m (GameWireIndexed m i a b)
- updateIndexedWire :: (GameWire m a b -> GameWire m a b) -> GameWireIndexed m i a b -> GameWireIndexed m i a b
- postActorAction :: Monad m => GameActor m i a b -> (i -> GameWire m b c) -> GameActor m i a c
- preActorAction :: Monad m => (i -> GameWire m c a) -> GameActor m i a b -> GameActor m i c b
Documentation
data GameWireIndexed m i a b Source
Game wire that has its own id
GameWireIndexed | |
|
Eq i => Eq (GameWireIndexed m i a b) Source | Equality by equality of ids |
type GameActor m i a b = GameMonadT m (GameWireIndexed m i a b) Source
Common pattern in game for creating incapsulated objects
Usually wires that are actors need context to register themselfes in core. Major part of wire functions operates with such wrapped indexed arrows thats why the convinient type synonym is exists.
updateIndexedWire :: (GameWire m a b -> GameWire m a b) -> GameWireIndexed m i a b -> GameWireIndexed m i a b Source
Replaces controlling wire in indexed wire
postActorAction :: Monad m => GameActor m i a b -> (i -> GameWire m b c) -> GameActor m i a c Source
Compose actor and wire, the wire is added at the end of actor controller
preActorAction :: Monad m => (i -> GameWire m c a) -> GameActor m i a b -> GameActor m i c b Source
Compose actor and wire, the wire is added at the beginning of actor controller