apecs-0.7.3: Fast Entity-Component-System library for game programming

Safe HaskellNone
LanguageHaskell2010

Apecs.Components

Contents

Synopsis

Documentation

data Not a #

Psuedocomponent indicating the absence of a. Mainly used as e.g. cmap $ (a, Not b) -> c to iterate over entities with an a but no b. Can also be used to delete components, like cmap $ a -> (Not :: Not a) to delete every a component.

Constructors

Not 
Instances
Has w m c => Has w m (Not c) # 
Instance details

Defined in Apecs.Components

Methods

getStore :: SystemT w m (Storage (Not c)) #

Component c => Component (Not c) # 
Instance details

Defined in Apecs.Components

Associated Types

type Storage (Not c) :: Type #

type Storage (Not c) # 
Instance details

Defined in Apecs.Components

type Storage (Not c) = NotStore (Storage c)

newtype NotStore s #

Pseudostore used to produce values of type Not a, inverts explExists, and destroys instead of explSet.

Constructors

NotStore s 
Instances
ExplDestroy m s => ExplSet m (NotStore s) # 
Instance details

Defined in Apecs.Components

Methods

explSet :: NotStore s -> Int -> Elem (NotStore s) -> m () #

ExplGet m s => ExplGet m (NotStore s) # 
Instance details

Defined in Apecs.Components

Methods

explGet :: NotStore s -> Int -> m (Elem (NotStore s)) #

explExists :: NotStore s -> Int -> m Bool #

type Elem (NotStore s) # 
Instance details

Defined in Apecs.Components

type Elem (NotStore s) = Not (Elem s)

newtype MaybeStore s #

Pseudostore used to produce values of type Maybe a. Will always return True for explExists. Writing can both set and delete a component using Just and Nothing respectively.

Constructors

MaybeStore s 
Instances
(ExplDestroy m s, ExplSet m s) => ExplSet m (MaybeStore s) # 
Instance details

Defined in Apecs.Components

Methods

explSet :: MaybeStore s -> Int -> Elem (MaybeStore s) -> m () #

ExplGet m s => ExplGet m (MaybeStore s) # 
Instance details

Defined in Apecs.Components

Methods

explGet :: MaybeStore s -> Int -> m (Elem (MaybeStore s)) #

explExists :: MaybeStore s -> Int -> m Bool #

type Elem (MaybeStore s) # 
Instance details

Defined in Apecs.Components

type Elem (MaybeStore s) = Maybe (Elem s)

data EitherStore sa sb #

Used for Either, a logical disjunction between two components. As expected, Either is used to model error values. Getting an Either a b will first attempt to get a b and return it as Right b, or if it does not exist, get an a as Left a. Can also be used to set one of two things.

Constructors

EitherStore sa sb 
Instances
(ExplDestroy m sa, ExplDestroy m sb) => ExplDestroy m (EitherStore sa sb) # 
Instance details

Defined in Apecs.Components

Methods

explDestroy :: EitherStore sa sb -> Int -> m () #

(ExplSet m sa, ExplSet m sb) => ExplSet m (EitherStore sa sb) # 
Instance details

Defined in Apecs.Components

Methods

explSet :: EitherStore sa sb -> Int -> Elem (EitherStore sa sb) -> m () #

(ExplGet m sa, ExplGet m sb) => ExplGet m (EitherStore sa sb) # 
Instance details

Defined in Apecs.Components

Methods

explGet :: EitherStore sa sb -> Int -> m (Elem (EitherStore sa sb)) #

explExists :: EitherStore sa sb -> Int -> m Bool #

type Elem (EitherStore sa sb) # 
Instance details

Defined in Apecs.Components

type Elem (EitherStore sa sb) = Either (Elem sa) (Elem sb)

data Filter c #

Pseudocomponent that functions normally for explExists and explMembers, but always return Filter for explGet. Can be used in cmap as cmap $ (Filter :: Filter a) -> b. Since the above can be written more consicely as cmap $ (_ :: a) -> b, it is rarely directly. More interestingly, we can define reusable filters like movables = Filter :: Filter (Position, Velocity). Note that 'Filter c' is equivalent to 'Not (Not c)'.

Constructors

Filter 
Instances
Has w m c => Has w m (Filter c) # 
Instance details

Defined in Apecs.Components

Methods

getStore :: SystemT w m (Storage (Filter c)) #

Eq (Filter c) # 
Instance details

Defined in Apecs.Components

Methods

(==) :: Filter c -> Filter c -> Bool #

(/=) :: Filter c -> Filter c -> Bool #

Show (Filter c) # 
Instance details

Defined in Apecs.Components

Methods

showsPrec :: Int -> Filter c -> ShowS #

show :: Filter c -> String #

showList :: [Filter c] -> ShowS #

Component c => Component (Filter c) # 
Instance details

Defined in Apecs.Components

Associated Types

type Storage (Filter c) :: Type #

type Storage (Filter c) # 
Instance details

Defined in Apecs.Components

newtype FilterStore s #

Constructors

FilterStore s 
Instances
ExplMembers m s => ExplMembers m (FilterStore s) # 
Instance details

Defined in Apecs.Components

Methods

explMembers :: FilterStore s -> m (Vector Int) #

ExplGet m s => ExplGet m (FilterStore s) # 
Instance details

Defined in Apecs.Components

Methods

explGet :: FilterStore s -> Int -> m (Elem (FilterStore s)) #

explExists :: FilterStore s -> Int -> m Bool #

type Elem (FilterStore s) # 
Instance details

Defined in Apecs.Components

type Elem (FilterStore s) = Filter (Elem s)

data EntityStore #

Pseudostore used to produce components of type Entity. Always returns True for explExists, and echoes back the entity argument for explGet. Used in e.g. cmap $ (a, ety :: Entity) -> b to access the current entity.

Constructors

EntityStore 
Instances
Monad m => ExplGet m EntityStore # 
Instance details

Defined in Apecs.Components

type Elem EntityStore # 
Instance details

Defined in Apecs.Components

data Redirect c #

Pseudocomponent that when written to, actually writes c to its entity argument. Used to dereference during a cmap.

Constructors

Redirect Entity c 
Instances
Has w m c => Has w m (Redirect c) # 
Instance details

Defined in Apecs.Components

Methods

getStore :: SystemT w m (Storage (Redirect c)) #

Eq c => Eq (Redirect c) # 
Instance details

Defined in Apecs.Components

Methods

(==) :: Redirect c -> Redirect c -> Bool #

(/=) :: Redirect c -> Redirect c -> Bool #

Show c => Show (Redirect c) # 
Instance details

Defined in Apecs.Components

Methods

showsPrec :: Int -> Redirect c -> ShowS #

show :: Redirect c -> String #

showList :: [Redirect c] -> ShowS #

Component c => Component (Redirect c) # 
Instance details

Defined in Apecs.Components

Associated Types

type Storage (Redirect c) :: Type #

type Storage (Redirect c) # 
Instance details

Defined in Apecs.Components

newtype RedirectStore s #

Constructors

RedirectStore s 
Instances
ExplSet m s => ExplSet m (RedirectStore s) # 
Instance details

Defined in Apecs.Components

Methods

explSet :: RedirectStore s -> Int -> Elem (RedirectStore s) -> m () #

type Elem (RedirectStore s) # 
Instance details

Defined in Apecs.Components

Orphan instances

Component () # 
Instance details

Associated Types

type Storage () :: Type #

Component Entity # 
Instance details

Associated Types

type Storage Entity :: Type #

Monad m => ExplDestroy m () # 
Instance details

Methods

explDestroy :: () -> Int -> m () #

Monad m => ExplSet m () # 
Instance details

Methods

explSet :: () -> Int -> Elem () -> m () #

Monad m => ExplGet m () # 
Instance details

Methods

explGet :: () -> Int -> m (Elem ()) #

explExists :: () -> Int -> m Bool #

Monad m => Has w m Entity # 
Instance details

Methods

getStore :: SystemT w m (Storage Entity) #

Monad m => Has w m () # 
Instance details

Methods

getStore :: SystemT w m (Storage ()) #

Has w m c => Has w m (Identity c) # 
Instance details

Methods

getStore :: SystemT w m (Storage (Identity c)) #

Has w m c => Has w m (Maybe c) # 
Instance details

Methods

getStore :: SystemT w m (Storage (Maybe c)) #

(Has w m ca, Has w m cb) => Has w m (Either ca cb) # 
Instance details

Methods

getStore :: SystemT w m (Storage (Either ca cb)) #

(Has w m t_0, Has w m t_1) => Has w m (t_0, t_1) # 
Instance details

Methods

getStore :: SystemT w m (Storage (t_0, t_1)) #

(Has w m t_0, Has w m t_1, Has w m t_2) => Has w m (t_0, t_1, t_2) # 
Instance details

Methods

getStore :: SystemT w m (Storage (t_0, t_1, t_2)) #

(Has w m t_0, Has w m t_1, Has w m t_2, Has w m t_3) => Has w m (t_0, t_1, t_2, t_3) # 
Instance details

Methods

getStore :: SystemT w m (Storage (t_0, t_1, t_2, t_3)) #

(Has w m t_0, Has w m t_1, Has w m t_2, Has w m t_3, Has w m t_4) => Has w m (t_0, t_1, t_2, t_3, t_4) # 
Instance details

Methods

getStore :: SystemT w m (Storage (t_0, t_1, t_2, t_3, t_4)) #

(Has w m t_0, Has w m t_1, Has w m t_2, Has w m t_3, Has w m t_4, Has w m t_5) => Has w m (t_0, t_1, t_2, t_3, t_4, t_5) # 
Instance details

Methods

getStore :: SystemT w m (Storage (t_0, t_1, t_2, t_3, t_4, t_5)) #

(Has w m t_0, Has w m t_1, Has w m t_2, Has w m t_3, Has w m t_4, Has w m t_5, Has w m t_6) => Has w m (t_0, t_1, t_2, t_3, t_4, t_5, t_6) # 
Instance details

Methods

getStore :: SystemT w m (Storage (t_0, t_1, t_2, t_3, t_4, t_5, t_6)) #

(Has w m t_0, Has w m t_1, Has w m t_2, Has w m t_3, Has w m t_4, Has w m t_5, Has w m t_6, Has w m t_7) => Has w m (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) # 
Instance details

Methods

getStore :: SystemT w m (Storage (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7)) #

ExplMembers m s => ExplMembers m (Identity s) # 
Instance details

Methods

explMembers :: Identity s -> m (Vector Int) #

ExplDestroy m s => ExplDestroy m (Identity s) # 
Instance details

Methods

explDestroy :: Identity s -> Int -> m () #

ExplSet m s => ExplSet m (Identity s) # 
Instance details

Methods

explSet :: Identity s -> Int -> Elem (Identity s) -> m () #

ExplGet m s => ExplGet m (Identity s) # 
Instance details

Methods

explGet :: Identity s -> Int -> m (Elem (Identity s)) #

explExists :: Identity s -> Int -> m Bool #

(ExplMembers m t_0, ExplGet m t_1) => ExplMembers m (t_0, t_1) # 
Instance details

Methods

explMembers :: (t_0, t_1) -> m (Vector Int) #

(ExplDestroy m t_0, ExplDestroy m t_1) => ExplDestroy m (t_0, t_1) # 
Instance details

Methods

explDestroy :: (t_0, t_1) -> Int -> m () #

(ExplSet m t_0, ExplSet m t_1) => ExplSet m (t_0, t_1) # 
Instance details

Methods

explSet :: (t_0, t_1) -> Int -> Elem (t_0, t_1) -> m () #

(ExplGet m t_0, ExplGet m t_1) => ExplGet m (t_0, t_1) # 
Instance details

Methods

explGet :: (t_0, t_1) -> Int -> m (Elem (t_0, t_1)) #

explExists :: (t_0, t_1) -> Int -> m Bool #

(ExplMembers m t_0, ExplGet m t_1, ExplGet m t_2) => ExplMembers m (t_0, t_1, t_2) # 
Instance details

Methods

explMembers :: (t_0, t_1, t_2) -> m (Vector Int) #

(ExplDestroy m t_0, ExplDestroy m t_1, ExplDestroy m t_2) => ExplDestroy m (t_0, t_1, t_2) # 
Instance details

Methods

explDestroy :: (t_0, t_1, t_2) -> Int -> m () #

(ExplSet m t_0, ExplSet m t_1, ExplSet m t_2) => ExplSet m (t_0, t_1, t_2) # 
Instance details

Methods

explSet :: (t_0, t_1, t_2) -> Int -> Elem (t_0, t_1, t_2) -> m () #

(ExplGet m t_0, ExplGet m t_1, ExplGet m t_2) => ExplGet m (t_0, t_1, t_2) # 
Instance details

Methods

explGet :: (t_0, t_1, t_2) -> Int -> m (Elem (t_0, t_1, t_2)) #

explExists :: (t_0, t_1, t_2) -> Int -> m Bool #

(ExplMembers m t_0, ExplGet m t_1, ExplGet m t_2, ExplGet m t_3) => ExplMembers m (t_0, t_1, t_2, t_3) # 
Instance details

Methods

explMembers :: (t_0, t_1, t_2, t_3) -> m (Vector Int) #

(ExplDestroy m t_0, ExplDestroy m t_1, ExplDestroy m t_2, ExplDestroy m t_3) => ExplDestroy m (t_0, t_1, t_2, t_3) # 
Instance details

Methods

explDestroy :: (t_0, t_1, t_2, t_3) -> Int -> m () #

(ExplSet m t_0, ExplSet m t_1, ExplSet m t_2, ExplSet m t_3) => ExplSet m (t_0, t_1, t_2, t_3) # 
Instance details

Methods

explSet :: (t_0, t_1, t_2, t_3) -> Int -> Elem (t_0, t_1, t_2, t_3) -> m () #

(ExplGet m t_0, ExplGet m t_1, ExplGet m t_2, ExplGet m t_3) => ExplGet m (t_0, t_1, t_2, t_3) # 
Instance details

Methods

explGet :: (t_0, t_1, t_2, t_3) -> Int -> m (Elem (t_0, t_1, t_2, t_3)) #

explExists :: (t_0, t_1, t_2, t_3) -> Int -> m Bool #

(ExplMembers m t_0, ExplGet m t_1, ExplGet m t_2, ExplGet m t_3, ExplGet m t_4) => ExplMembers m (t_0, t_1, t_2, t_3, t_4) # 
Instance details

Methods

explMembers :: (t_0, t_1, t_2, t_3, t_4) -> m (Vector Int) #

(ExplDestroy m t_0, ExplDestroy m t_1, ExplDestroy m t_2, ExplDestroy m t_3, ExplDestroy m t_4) => ExplDestroy m (t_0, t_1, t_2, t_3, t_4) # 
Instance details

Methods

explDestroy :: (t_0, t_1, t_2, t_3, t_4) -> Int -> m () #

(ExplSet m t_0, ExplSet m t_1, ExplSet m t_2, ExplSet m t_3, ExplSet m t_4) => ExplSet m (t_0, t_1, t_2, t_3, t_4) # 
Instance details

Methods

explSet :: (t_0, t_1, t_2, t_3, t_4) -> Int -> Elem (t_0, t_1, t_2, t_3, t_4) -> m () #

(ExplGet m t_0, ExplGet m t_1, ExplGet m t_2, ExplGet m t_3, ExplGet m t_4) => ExplGet m (t_0, t_1, t_2, t_3, t_4) # 
Instance details

Methods

explGet :: (t_0, t_1, t_2, t_3, t_4) -> Int -> m (Elem (t_0, t_1, t_2, t_3, t_4)) #

explExists :: (t_0, t_1, t_2, t_3, t_4) -> Int -> m Bool #

(ExplMembers m t_0, ExplGet m t_1, ExplGet m t_2, ExplGet m t_3, ExplGet m t_4, ExplGet m t_5) => ExplMembers m (t_0, t_1, t_2, t_3, t_4, t_5) # 
Instance details

Methods

explMembers :: (t_0, t_1, t_2, t_3, t_4, t_5) -> m (Vector Int) #

(ExplDestroy m t_0, ExplDestroy m t_1, ExplDestroy m t_2, ExplDestroy m t_3, ExplDestroy m t_4, ExplDestroy m t_5) => ExplDestroy m (t_0, t_1, t_2, t_3, t_4, t_5) # 
Instance details

Methods

explDestroy :: (t_0, t_1, t_2, t_3, t_4, t_5) -> Int -> m () #

(ExplSet m t_0, ExplSet m t_1, ExplSet m t_2, ExplSet m t_3, ExplSet m t_4, ExplSet m t_5) => ExplSet m (t_0, t_1, t_2, t_3, t_4, t_5) # 
Instance details

Methods

explSet :: (t_0, t_1, t_2, t_3, t_4, t_5) -> Int -> Elem (t_0, t_1, t_2, t_3, t_4, t_5) -> m () #

(ExplGet m t_0, ExplGet m t_1, ExplGet m t_2, ExplGet m t_3, ExplGet m t_4, ExplGet m t_5) => ExplGet m (t_0, t_1, t_2, t_3, t_4, t_5) # 
Instance details

Methods

explGet :: (t_0, t_1, t_2, t_3, t_4, t_5) -> Int -> m (Elem (t_0, t_1, t_2, t_3, t_4, t_5)) #

explExists :: (t_0, t_1, t_2, t_3, t_4, t_5) -> Int -> m Bool #

(ExplMembers m t_0, ExplGet m t_1, ExplGet m t_2, ExplGet m t_3, ExplGet m t_4, ExplGet m t_5, ExplGet m t_6) => ExplMembers m (t_0, t_1, t_2, t_3, t_4, t_5, t_6) # 
Instance details

Methods

explMembers :: (t_0, t_1, t_2, t_3, t_4, t_5, t_6) -> m (Vector Int) #

(ExplDestroy m t_0, ExplDestroy m t_1, ExplDestroy m t_2, ExplDestroy m t_3, ExplDestroy m t_4, ExplDestroy m t_5, ExplDestroy m t_6) => ExplDestroy m (t_0, t_1, t_2, t_3, t_4, t_5, t_6) # 
Instance details

Methods

explDestroy :: (t_0, t_1, t_2, t_3, t_4, t_5, t_6) -> Int -> m () #

(ExplSet m t_0, ExplSet m t_1, ExplSet m t_2, ExplSet m t_3, ExplSet m t_4, ExplSet m t_5, ExplSet m t_6) => ExplSet m (t_0, t_1, t_2, t_3, t_4, t_5, t_6) # 
Instance details

Methods

explSet :: (t_0, t_1, t_2, t_3, t_4, t_5, t_6) -> Int -> Elem (t_0, t_1, t_2, t_3, t_4, t_5, t_6) -> m () #

(ExplGet m t_0, ExplGet m t_1, ExplGet m t_2, ExplGet m t_3, ExplGet m t_4, ExplGet m t_5, ExplGet m t_6) => ExplGet m (t_0, t_1, t_2, t_3, t_4, t_5, t_6) # 
Instance details

Methods

explGet :: (t_0, t_1, t_2, t_3, t_4, t_5, t_6) -> Int -> m (Elem (t_0, t_1, t_2, t_3, t_4, t_5, t_6)) #

explExists :: (t_0, t_1, t_2, t_3, t_4, t_5, t_6) -> Int -> m Bool #

(ExplMembers m t_0, ExplGet m t_1, ExplGet m t_2, ExplGet m t_3, ExplGet m t_4, ExplGet m t_5, ExplGet m t_6, ExplGet m t_7) => ExplMembers m (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) # 
Instance details

Methods

explMembers :: (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) -> m (Vector Int) #

(ExplDestroy m t_0, ExplDestroy m t_1, ExplDestroy m t_2, ExplDestroy m t_3, ExplDestroy m t_4, ExplDestroy m t_5, ExplDestroy m t_6, ExplDestroy m t_7) => ExplDestroy m (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) # 
Instance details

Methods

explDestroy :: (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) -> Int -> m () #

(ExplSet m t_0, ExplSet m t_1, ExplSet m t_2, ExplSet m t_3, ExplSet m t_4, ExplSet m t_5, ExplSet m t_6, ExplSet m t_7) => ExplSet m (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) # 
Instance details

Methods

explSet :: (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) -> Int -> Elem (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) -> m () #

(ExplGet m t_0, ExplGet m t_1, ExplGet m t_2, ExplGet m t_3, ExplGet m t_4, ExplGet m t_5, ExplGet m t_6, ExplGet m t_7) => ExplGet m (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) # 
Instance details

Methods

explGet :: (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) -> Int -> m (Elem (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7)) #

explExists :: (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) -> Int -> m Bool #

Component c => Component (Maybe c) # 
Instance details

Associated Types

type Storage (Maybe c) :: Type #

Component c => Component (Identity c) #

Identity component. Identity c is equivalent to c, so mostly useless.

Instance details

Associated Types

type Storage (Identity c) :: Type #

(Component ca, Component cb) => Component (Either ca cb) # 
Instance details

Associated Types

type Storage (Either ca cb) :: Type #

(Component t_0, Component t_1) => Component (t_0, t_1) # 
Instance details

Associated Types

type Storage (t_0, t_1) :: Type #

(Component t_0, Component t_1, Component t_2) => Component (t_0, t_1, t_2) # 
Instance details

Associated Types

type Storage (t_0, t_1, t_2) :: Type #

(Component t_0, Component t_1, Component t_2, Component t_3) => Component (t_0, t_1, t_2, t_3) # 
Instance details

Associated Types

type Storage (t_0, t_1, t_2, t_3) :: Type #

(Component t_0, Component t_1, Component t_2, Component t_3, Component t_4) => Component (t_0, t_1, t_2, t_3, t_4) # 
Instance details

Associated Types

type Storage (t_0, t_1, t_2, t_3, t_4) :: Type #

(Component t_0, Component t_1, Component t_2, Component t_3, Component t_4, Component t_5) => Component (t_0, t_1, t_2, t_3, t_4, t_5) # 
Instance details

Associated Types

type Storage (t_0, t_1, t_2, t_3, t_4, t_5) :: Type #

(Component t_0, Component t_1, Component t_2, Component t_3, Component t_4, Component t_5, Component t_6) => Component (t_0, t_1, t_2, t_3, t_4, t_5, t_6) # 
Instance details

Associated Types

type Storage (t_0, t_1, t_2, t_3, t_4, t_5, t_6) :: Type #

(Component t_0, Component t_1, Component t_2, Component t_3, Component t_4, Component t_5, Component t_6, Component t_7) => Component (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) # 
Instance details

Associated Types

type Storage (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) :: Type #