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

Safe HaskellNone
LanguageHaskell2010

Apecs.Core

Synopsis

Documentation

newtype Entity Source #

An Entity is just an integer, used to index into a component store. In general, use newEntity, cmap, and component tags instead of manipulating these directly.

For performance reasons, negative values like (-1) are reserved for stores to represent special values, so avoid using these.

Constructors

Entity 

Fields

Instances
Enum Entity Source # 
Instance details

Defined in Apecs.Core

Eq Entity Source # 
Instance details

Defined in Apecs.Core

Methods

(==) :: Entity -> Entity -> Bool #

(/=) :: Entity -> Entity -> Bool #

Num Entity Source # 
Instance details

Defined in Apecs.Core

Ord Entity Source # 
Instance details

Defined in Apecs.Core

Show Entity Source # 
Instance details

Defined in Apecs.Core

Component Entity Source # 
Instance details

Defined in Apecs.Components

Associated Types

type Storage Entity :: Type Source #

Monad m => Has w m Entity Source # 
Instance details

Defined in Apecs.Components

type Storage Entity Source # 
Instance details

Defined in Apecs.Components

newtype SystemT w m a Source #

A SystemT is a newtype around `ReaderT w m a`, where w is the game world variable. Systems serve to

  • Allow type-based lookup of a component's store through getStore.
  • Lift side effects into their host Monad.

Constructors

SystemT 

Fields

Instances
Monad m => MonadReader w (SystemT w m) Source # 
Instance details

Defined in Apecs.Core

Methods

ask :: SystemT w m w #

local :: (w -> w) -> SystemT w m a -> SystemT w m a #

reader :: (w -> a) -> SystemT w m a #

MonadTrans (SystemT w) Source # 
Instance details

Defined in Apecs.Core

Methods

lift :: Monad m => m a -> SystemT w m a #

Monad m => Monad (SystemT w m) Source # 
Instance details

Defined in Apecs.Core

Methods

(>>=) :: SystemT w m a -> (a -> SystemT w m b) -> SystemT w m b #

(>>) :: SystemT w m a -> SystemT w m b -> SystemT w m b #

return :: a -> SystemT w m a #

fail :: String -> SystemT w m a #

Functor m => Functor (SystemT w m) Source # 
Instance details

Defined in Apecs.Core

Methods

fmap :: (a -> b) -> SystemT w m a -> SystemT w m b #

(<$) :: a -> SystemT w m b -> SystemT w m a #

Applicative m => Applicative (SystemT w m) Source # 
Instance details

Defined in Apecs.Core

Methods

pure :: a -> SystemT w m a #

(<*>) :: SystemT w m (a -> b) -> SystemT w m a -> SystemT w m b #

liftA2 :: (a -> b -> c) -> SystemT w m a -> SystemT w m b -> SystemT w m c #

(*>) :: SystemT w m a -> SystemT w m b -> SystemT w m b #

(<*) :: SystemT w m a -> SystemT w m b -> SystemT w m a #

MonadIO m => MonadIO (SystemT w m) Source # 
Instance details

Defined in Apecs.Core

Methods

liftIO :: IO a -> SystemT w m a #

type System w a = SystemT w IO a Source #

class Elem (Storage c) ~ c => Component c Source #

A component is defined by specifying how it is stored. The constraint ensures that stores and components are mapped one-to-one.

Associated Types

type Storage c Source #

Instances
Component () Source # 
Instance details

Defined in Apecs.Components

Associated Types

type Storage () :: Type Source #

Component Entity Source # 
Instance details

Defined in Apecs.Components

Associated Types

type Storage Entity :: Type Source #

Component EntityCounter Source # 
Instance details

Defined in Apecs.Util

Associated Types

type Storage EntityCounter :: Type Source #

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

Defined in Apecs.Components

Associated Types

type Storage (Maybe c) :: Type Source #

Component c => Component (Identity c) Source #

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

Instance details

Defined in Apecs.Components

Associated Types

type Storage (Identity c) :: Type Source #

Component c => Component (Head c) Source # 
Instance details

Defined in Apecs.Experimental.Components

Associated Types

type Storage (Head c) :: Type Source #

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

Defined in Apecs.Experimental.Components

Associated Types

type Storage (Redirect c) :: Type Source #

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

Defined in Apecs.Components

Associated Types

type Storage (Filter c) :: Type Source #

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

Defined in Apecs.Components

Associated Types

type Storage (Not c) :: Type Source #

(Storage c ~ Pushdown s c, Component c) => Component (Stack c) Source # 
Instance details

Defined in Apecs.Experimental.Stores

Associated Types

type Storage (Stack c) :: Type Source #

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

Defined in Apecs.Components

Associated Types

type Storage (Either ca cb) :: Type Source #

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

Defined in Apecs.Components

Associated Types

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

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

Defined in Apecs.Components

Associated Types

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

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

Defined in Apecs.Components

Associated Types

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

(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) Source # 
Instance details

Defined in Apecs.Components

Associated Types

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

(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) Source # 
Instance details

Defined in Apecs.Components

Associated Types

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

(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) Source # 
Instance details

Defined in Apecs.Components

Associated Types

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

(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) Source # 
Instance details

Defined in Apecs.Components

Associated Types

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

class (Monad m, Component c) => Has w m c where Source #

Has w m c means that world w can produce a Storage c.

Methods

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

Instances
Monad m => Has w m Entity Source # 
Instance details

Defined in Apecs.Components

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

Defined in Apecs.Components

Methods

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

Has w m c => Has w m (Head c) Source # 
Instance details

Defined in Apecs.Experimental.Components

Methods

getStore :: SystemT w m (Storage (Head c)) Source #

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

Defined in Apecs.Experimental.Components

Methods

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

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

Defined in Apecs.Components

Methods

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

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

Defined in Apecs.Components

Methods

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

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

Defined in Apecs.Components

Methods

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

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

Defined in Apecs.Components

Methods

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

(Storage c ~ Pushdown s c, Has w m c) => Has w m (Stack c) Source # 
Instance details

Defined in Apecs.Experimental.Stores

Methods

getStore :: SystemT w m (Storage (Stack c)) Source #

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

Defined in Apecs.Components

Methods

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

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

Defined in Apecs.Components

Methods

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

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

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

type family Elem s Source #

The type of components stored by a store, e.g. Elem (Map c) = c.

Instances
type Elem () Source # 
Instance details

Defined in Apecs.Components

type Elem () = ()
type Elem EntityStore Source # 
Instance details

Defined in Apecs.Components

type Elem (Identity s) Source # 
Instance details

Defined in Apecs.Components

type Elem (Identity s) = Identity (Elem s)
type Elem (ReadOnly s) Source # 
Instance details

Defined in Apecs.Stores

type Elem (ReadOnly s) = Elem s
type Elem (Global c) Source # 
Instance details

Defined in Apecs.Stores

type Elem (Global c) = c
type Elem (Unique c) Source # 
Instance details

Defined in Apecs.Stores

type Elem (Unique c) = c
type Elem (Map c) Source # 
Instance details

Defined in Apecs.Stores

type Elem (Map c) = c
type Elem (FilterStore s) Source # 
Instance details

Defined in Apecs.Components

type Elem (FilterStore s) = Filter (Elem s)
type Elem (MaybeStore s) Source # 
Instance details

Defined in Apecs.Components

type Elem (MaybeStore s) = Maybe (Elem s)
type Elem (NotStore s) Source # 
Instance details

Defined in Apecs.Components

type Elem (NotStore s) = Not (Elem s)
type Elem (IxMap c) Source # 
Instance details

Defined in Apecs.Experimental.Reactive

type Elem (IxMap c) = c
type Elem (OrdMap c) Source # 
Instance details

Defined in Apecs.Experimental.Reactive

type Elem (OrdMap c) = c
type Elem (EnumMap c) Source # 
Instance details

Defined in Apecs.Experimental.Reactive

type Elem (EnumMap c) = c
type Elem (t_0, t_1) Source # 
Instance details

Defined in Apecs.Components

type Elem (t_0, t_1) = (Elem t_0, Elem t_1)
type Elem (Cache n s) Source # 
Instance details

Defined in Apecs.Stores

type Elem (Cache n s) = Elem s
type Elem (EitherStore sa sb) Source # 
Instance details

Defined in Apecs.Components

type Elem (EitherStore sa sb) = Either (Elem sa) (Elem sb)
type Elem (Pushdown s c) Source # 
Instance details

Defined in Apecs.Experimental.Stores

type Elem (Pushdown s c) = c
type Elem (Reactive r s) Source # 
Instance details

Defined in Apecs.Experimental.Reactive

type Elem (Reactive r s) = Elem s
type Elem (t_0, t_1, t_2) Source # 
Instance details

Defined in Apecs.Components

type Elem (t_0, t_1, t_2) = (Elem t_0, Elem t_1, Elem t_2)
type Elem (t_0, t_1, t_2, t_3) Source # 
Instance details

Defined in Apecs.Components

type Elem (t_0, t_1, t_2, t_3) = (Elem t_0, Elem t_1, Elem t_2, Elem t_3)
type Elem (t_0, t_1, t_2, t_3, t_4) Source # 
Instance details

Defined in Apecs.Components

type Elem (t_0, t_1, t_2, t_3, t_4) = (Elem t_0, Elem t_1, Elem t_2, Elem t_3, Elem t_4)
type Elem (t_0, t_1, t_2, t_3, t_4, t_5) Source # 
Instance details

Defined in Apecs.Components

type Elem (t_0, t_1, t_2, t_3, t_4, t_5) = (Elem t_0, Elem t_1, Elem t_2, Elem t_3, Elem t_4, Elem t_5)
type Elem (t_0, t_1, t_2, t_3, t_4, t_5, t_6) Source # 
Instance details

Defined in Apecs.Components

type Elem (t_0, t_1, t_2, t_3, t_4, t_5, t_6) = (Elem t_0, Elem t_1, Elem t_2, Elem t_3, Elem t_4, Elem t_5, Elem t_6)
type Elem (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) Source # 
Instance details

Defined in Apecs.Components

type Elem (t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7) = (Elem t_0, Elem t_1, Elem t_2, Elem t_3, Elem t_4, Elem t_5, Elem t_6, Elem t_7)

class ExplInit m s where Source #

Indicates that the store s can be initialized. Generally, "base" stores like Map c can be initialized, but composite stores like MaybeStore s cannot.

Methods

explInit :: m s Source #

Initialize a new empty store.

Instances
(Functor m, ExplInit m s) => ExplInit m (ReadOnly s) Source # 
Instance details

Defined in Apecs.Stores

Methods

explInit :: m (ReadOnly s) Source #

(Monoid c, MonadIO m) => ExplInit m (Global c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explInit :: m (Global c) Source #

MonadIO m => ExplInit m (Unique c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explInit :: m (Unique c) Source #

MonadIO m => ExplInit m (Map c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explInit :: m (Map c) Source #

(MonadIO m, ExplInit m s, KnownNat n, Cachable s) => ExplInit m (Cache n s) Source # 
Instance details

Defined in Apecs.Stores

Methods

explInit :: m (Cache n s) Source #

(Functor m, ExplInit m (s (Stack c))) => ExplInit m (Pushdown s c) Source # 
Instance details

Defined in Apecs.Experimental.Stores

Methods

explInit :: m (Pushdown s c) Source #

(Reacts m r, ExplInit m s) => ExplInit m (Reactive r s) Source # 
Instance details

Defined in Apecs.Experimental.Reactive

Methods

explInit :: m (Reactive r s) Source #

class Monad m => ExplGet m s where Source #

Stores that we can read using explGet and explExists. For some entity e, eplGet s e is only guaranteed to be safe if explExists s e returns True.

Methods

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

Reads a component from the store. What happens if the component does not exist is left undefined, and might not necessarily crash.

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

Returns whether there is a component for the given index.

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

Defined in Apecs.Components

Monad m => ExplGet m () Source # 
Instance details

Defined in Apecs.Components

Methods

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

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

ExplGet m s => ExplGet m (ReadOnly s) Source # 
Instance details

Defined in Apecs.Stores

Methods

explGet :: ReadOnly s -> Int -> m (Elem (ReadOnly s)) Source #

explExists :: ReadOnly s -> Int -> m Bool Source #

MonadIO m => ExplGet m (Global c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explGet :: Global c -> Int -> m (Elem (Global c)) Source #

explExists :: Global c -> Int -> m Bool Source #

MonadIO m => ExplGet m (Unique c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explGet :: Unique c -> Int -> m (Elem (Unique c)) Source #

explExists :: Unique c -> Int -> m Bool Source #

MonadIO m => ExplGet m (Map c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explGet :: Map c -> Int -> m (Elem (Map c)) Source #

explExists :: Map c -> Int -> m Bool Source #

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

Defined in Apecs.Components

Methods

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

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

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

Defined in Apecs.Components

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

Defined in Apecs.Components

Methods

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

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

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

Defined in Apecs.Components

Methods

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

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

(MonadIO m, ExplGet m s) => ExplGet m (Cache n s) Source # 
Instance details

Defined in Apecs.Stores

Methods

explGet :: Cache n s -> Int -> m (Elem (Cache n s)) Source #

explExists :: Cache n s -> Int -> m Bool Source #

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

Defined in Apecs.Components

Methods

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

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

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

Defined in Apecs.Components

Methods

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

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

(Monad m, ExplGet m (s (Stack c)), Elem (s (Stack c)) ~ Stack c) => ExplGet m (Pushdown s c) Source # 
Instance details

Defined in Apecs.Experimental.Stores

Methods

explGet :: Pushdown s c -> Int -> m (Elem (Pushdown s c)) Source #

explExists :: Pushdown s c -> Int -> m Bool Source #

ExplGet m s => ExplGet m (Reactive r s) Source # 
Instance details

Defined in Apecs.Experimental.Reactive

Methods

explGet :: Reactive r s -> Int -> m (Elem (Reactive r s)) Source #

explExists :: Reactive r s -> Int -> m Bool Source #

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

Defined in Apecs.Components

Methods

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

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

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

(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) Source # 
Instance details

Defined in Apecs.Components

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

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

(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) Source # 
Instance details

Defined in Apecs.Components

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

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

(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) Source # 
Instance details

Defined in Apecs.Components

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

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

(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) Source # 
Instance details

Defined in Apecs.Components

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

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

class Monad m => ExplSet m s where Source #

Stores that can be written.

Methods

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

Writes a component to the store.

Instances
Monad m => ExplSet m () Source # 
Instance details

Defined in Apecs.Components

Methods

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

MonadIO m => ExplSet m (Global c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explSet :: Global c -> Int -> Elem (Global c) -> m () Source #

MonadIO m => ExplSet m (Unique c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explSet :: Unique c -> Int -> Elem (Unique c) -> m () Source #

MonadIO m => ExplSet m (Map c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explSet :: Map c -> Int -> Elem (Map c) -> m () Source #

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

Defined in Apecs.Components

Methods

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

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

Defined in Apecs.Components

Methods

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

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

Defined in Apecs.Components

Methods

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

(MonadIO m, ExplSet m s) => ExplSet m (Cache n s) Source # 
Instance details

Defined in Apecs.Stores

Methods

explSet :: Cache n s -> Int -> Elem (Cache n s) -> m () Source #

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

Defined in Apecs.Components

Methods

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

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

Defined in Apecs.Components

Methods

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

(Monad m, ExplGet m (s (Stack c)), ExplSet m (s (Stack c)), Elem (s (Stack c)) ~ Stack c) => ExplSet m (Pushdown s c) Source # 
Instance details

Defined in Apecs.Experimental.Stores

Methods

explSet :: Pushdown s c -> Int -> Elem (Pushdown s c) -> m () Source #

(Reacts m r, ExplSet m s, ExplGet m s, Elem s ~ Elem r) => ExplSet m (Reactive r s) Source # 
Instance details

Defined in Apecs.Experimental.Reactive

Methods

explSet :: Reactive r s -> Int -> Elem (Reactive r s) -> m () Source #

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

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

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 () Source #

(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) Source # 
Instance details

Defined in Apecs.Components

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 () Source #

(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) Source # 
Instance details

Defined in Apecs.Components

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 () Source #

(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) Source # 
Instance details

Defined in Apecs.Components

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 () Source #

class Monad m => ExplDestroy m s where Source #

Stores that components can be removed from.

Methods

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

Destroys the component for a given index.

Instances
Monad m => ExplDestroy m () Source # 
Instance details

Defined in Apecs.Components

Methods

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

MonadIO m => ExplDestroy m (Unique c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explDestroy :: Unique c -> Int -> m () Source #

MonadIO m => ExplDestroy m (Map c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explDestroy :: Map c -> Int -> m () Source #

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

Defined in Apecs.Components

Methods

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

(MonadIO m, ExplDestroy m s) => ExplDestroy m (Cache n s) Source # 
Instance details

Defined in Apecs.Stores

Methods

explDestroy :: Cache n s -> Int -> m () Source #

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

Defined in Apecs.Components

Methods

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

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

Defined in Apecs.Components

Methods

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

(Monad m, ExplGet m (s (Stack c)), ExplSet m (s (Stack c)), ExplDestroy m (s (Stack c)), Elem (s (Stack c)) ~ Stack c) => ExplDestroy m (Pushdown s c) Source # 
Instance details

Defined in Apecs.Experimental.Stores

Methods

explDestroy :: Pushdown s c -> Int -> m () Source #

(Reacts m r, ExplDestroy m s, ExplGet m s, Elem s ~ Elem r) => ExplDestroy m (Reactive r s) Source # 
Instance details

Defined in Apecs.Experimental.Reactive

Methods

explDestroy :: Reactive r s -> Int -> m () Source #

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

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

class Monad m => ExplMembers m s where Source #

Stores that we can request a list of member entities for.

Methods

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

Returns an unboxed vector of member indices

Instances
ExplMembers m s => ExplMembers m (ReadOnly s) Source # 
Instance details

Defined in Apecs.Stores

Methods

explMembers :: ReadOnly s -> m (Vector Int) Source #

MonadIO m => ExplMembers m (Unique c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explMembers :: Unique c -> m (Vector Int) Source #

MonadIO m => ExplMembers m (Map c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explMembers :: Map c -> m (Vector Int) Source #

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

Defined in Apecs.Components

Methods

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

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

Defined in Apecs.Components

(MonadIO m, ExplMembers m s) => ExplMembers m (Cache n s) Source # 
Instance details

Defined in Apecs.Stores

Methods

explMembers :: Cache n s -> m (Vector Int) Source #

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

Defined in Apecs.Components

Methods

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

(Monad m, ExplMembers m (s (Stack c)), Elem (s (Stack c)) ~ Stack c) => ExplMembers m (Pushdown s c) Source # 
Instance details

Defined in Apecs.Experimental.Stores

Methods

explMembers :: Pushdown s c -> m (Vector Int) Source #

ExplMembers m s => ExplMembers m (Reactive r s) Source # 
Instance details

Defined in Apecs.Experimental.Reactive

Methods

explMembers :: Reactive r s -> m (Vector Int) Source #

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

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

(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) Source # 
Instance details

Defined in Apecs.Components

Methods

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

type Get w m c = (Has w m c, ExplGet m (Storage c)) Source #

type Set w m c = (Has w m c, ExplSet m (Storage c)) Source #

type Members w m c = (Has w m c, ExplMembers m (Storage c)) Source #

type Destroy w m c = (Has w m c, ExplDestroy m (Storage c)) Source #