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 # | |