| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Apecs.Core
- newtype Entity = Entity {}
- newtype System w a = System {}
- class Elem (Storage c) ~ c => Component c where
- type Storage c
- class Component c => Has w c where
- type family Elem s
- class ExplInit s where
- class ExplGet s where
- class ExplSet s where
- class ExplDestroy s where
- class ExplMembers s where
- type Get w c = (Has w c, ExplGet (Storage c))
- type Set w c = (Has w c, ExplSet (Storage c))
- type Members w c = (Has w c, ExplMembers (Storage c))
- type Destroy w c = (Has w c, ExplDestroy (Storage c))
- data Not a = Not
- newtype NotStore s = NotStore s
- newtype MaybeStore s = MaybeStore s
- data Filter c = Filter
- newtype FilterStore s = FilterStore s
- data EntityStore = EntityStore
Documentation
An Entity is just an integer, used to index into a component store.
A System is a newtype around `ReaderT w IO a`, where w is the game world variable.
class Elem (Storage c) ~ c => Component c Source #
A component is defined by the type of its storage The storage in turn supplies runtime types for the component. For the component to be valid, its Storage must be an instance of Store.
Instances
class Component c => Has w c where Source #
A world Has a component if it can produce its Storage
Minimal complete definition
Instances
| Has w Entity Source # | |
| Has w c => Has w (Identity c) Source # | |
| Has w c => Has w (Filter c) Source # | |
| Has w c => Has w (Maybe c) Source # | |
| Has w c => Has w (Not c) Source # | |
| (Has w t_0, Has w t_1) => Has w (t_0, t_1) Source # | |
| (Has w t_0, Has w t_1, Has w t_2) => Has w (t_0, t_1, t_2) Source # | |
| (Has w t_0, Has w t_1, Has w t_2, Has w t_3) => Has w (t_0, t_1, t_2, t_3) Source # | |
| (Has w t_0, Has w t_1, Has w t_2, Has w t_3, Has w t_4) => Has w (t_0, t_1, t_2, t_3, t_4) Source # | |
| (Has w t_0, Has w t_1, Has w t_2, Has w t_3, Has w t_4, Has w t_5) => Has w (t_0, t_1, t_2, t_3, t_4, t_5) Source # | |
| (Has w t_0, Has w t_1, Has w t_2, Has w t_3, Has w t_4, Has w t_5, Has w t_6) => Has w (t_0, t_1, t_2, t_3, t_4, t_5, t_6) Source # | |
| (Has w t_0, Has w t_1, Has w t_2, Has w t_3, Has w t_4, Has w t_5, Has w t_6, Has w t_7) => Has w (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) Source # | |
The type of components stored by a Store
Instances
| type Elem EntityStore Source # | |
| type Elem (Identity s) Source # | |
| type Elem (FilterStore s) Source # | |
| type Elem (MaybeStore s) Source # | |
| type Elem (NotStore s) Source # | |
| type Elem (Global c) Source # | |
| type Elem (Unique c) Source # | |
| type Elem (Map c) Source # | |
| type Elem (t_0, t_1) Source # | |
| type Elem (Cache n s) Source # | |
| type Elem (t_0, t_1, t_2) Source # | |
| type Elem (t_0, t_1, t_2, t_3) Source # | |
| type Elem (t_0, t_1, t_2, t_3, t_4) Source # | |
| type Elem (t_0, t_1, t_2, t_3, t_4, t_5) Source # | |
| type Elem (t_0, t_1, t_2, t_3, t_4, t_5, t_6) Source # | |
| type Elem (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) Source # | |
class ExplGet s where Source #
Stores that support get and exists in the IO monad
If existsIO
Minimal complete definition
Methods
explGet :: s -> Int -> IO (Elem s) Source #
Reads a component from the store. What happens if the component does not exist is left undefined.
explExists :: s -> Int -> IO Bool Source #
Returns whether there is a component for the given index
Instances
class ExplSet s where Source #
Minimal complete definition
Instances
class ExplDestroy s where Source #
Minimal complete definition
Instances
class ExplMembers s where Source #
Minimal complete definition
Instances
Psuedocomponent indicating the absence of a.
Constructors
| Not |
Pseudostore used to produce values of type Not a
Constructors
| NotStore s |
newtype MaybeStore s Source #
Pseudostore used to produce values of type Maybe a
Constructors
| MaybeStore s |
Instances
| (ExplDestroy s, ExplSet s) => ExplSet (MaybeStore s) Source # | |
| ExplGet s => ExplGet (MaybeStore s) Source # | |
| type Elem (MaybeStore s) Source # | |
Constructors
| Filter |
newtype FilterStore s Source #
Constructors
| FilterStore s |
Instances
| ExplGet s => ExplGet (FilterStore s) Source # | |
| type Elem (FilterStore s) Source # | |
data EntityStore Source #
Pseudostore used to produce components of type Entity
Constructors
| EntityStore |
Instances
| ExplGet EntityStore Source # | |
| type Elem EntityStore Source # | |