aztecs-0.12.0: A modular game engine and Entity-Component-System (ECS) for Haskell.
Copyright(c) Matt Hunzinger 2025
LicenseBSD-style (see the LICENSE file in the distribution)
Maintainermatt@hunzinger.me
Stabilityprovisional
Portabilitynon-portable (GHC extensions)
Safe HaskellSafe-Inferred
LanguageHaskell2010

Aztecs.ECS.System

Description

Systems to process entities.

Synopsis

Systems

newtype SystemT m a Source #

System to process entities.

Since: 0.11

Constructors

System 

Fields

Instances

Instances details
MonadIO m => MonadIO (SystemT m) Source #

Since: 0.11

Instance details

Defined in Aztecs.ECS.System

Methods

liftIO :: IO a -> SystemT m a #

Monad m => Applicative (SystemT m) Source #

Since: 0.11

Instance details

Defined in Aztecs.ECS.System

Methods

pure :: a -> SystemT m a #

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

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

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

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

Functor (SystemT m) Source #

Since: 0.11

Instance details

Defined in Aztecs.ECS.System

Methods

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

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

Monad m => Monad (SystemT m) Source #

Since: 0.11

Instance details

Defined in Aztecs.ECS.System

Methods

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

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

return :: a -> SystemT m a #

Queries

Reading

readQuery :: Monad m => Query a -> SystemT m [a] Source #

Match all entities with a Query.

Since: 0.11

readQueryT :: Monad m => QueryT m a -> SystemT m [a] Source #

Match all entities with a QueryT.

Since: 0.11

readQueryEntities :: Monad m => [EntityID] -> Query a -> SystemT m [a] Source #

Match entities with a QueryT.

Since: 0.11

readQueryEntitiesT :: Monad m => [EntityID] -> QueryT m a -> SystemT m [a] Source #

Match entities with a QueryT.

Since: 0.11

Writing

query :: Monad m => Query a -> SystemT m [a] Source #

Match and update all entities with a QueryT.

Since: 0.11

queryT :: Monad m => QueryT m a -> SystemT m [a] Source #

Match and update all entities with a QueryT.

Since: 0.11

querySingleMaybe :: Monad m => Query a -> SystemT m (Maybe a) Source #

Match and update a single entity with a Query, or Nothing.

Since: 0.11

querySingleMaybeT :: Monad m => QueryT m a -> SystemT m (Maybe a) Source #

Match and update a single entity with a QueryT, or Nothing.

Since: 0.11

Conversion

fromQuery :: Query a -> SystemT m (DynamicQuery a) Source #

Convert a Query to a SystemT.

Since: 0.11

fromQueryT :: Monad m => QueryT m a -> SystemT m (DynamicQueryT m a) Source #

Convert a QueryT to a SystemT.

Since: 0.11

Dynamic Queries

Reading

Writing

queryDyn :: Monad m => DynamicQuery a -> SystemT m [a] Source #

Map all entities with a DynamicQuery.

Since: 0.11

queryDynT :: Monad m => DynamicQueryT m a -> SystemT m [a] Source #

Map all entities with a DynamicQueryT.

Since: 0.11

querySingleMaybeDyn :: Monad m => DynamicQuery a -> SystemT m (Maybe a) Source #

Map a single entity with a DynamicQuery.

Since: 0.11

querySingleMaybeDynT :: Monad m => DynamicQueryT m a -> SystemT m (Maybe a) Source #

Map a single entity with a DynamicQueryT.

Since: 0.11

Internal

data Job t m a where Source #

Job to be interpreted.

Since: 0.11

Constructors

Pure :: a -> Job t m a 
Map :: (a -> b) -> Job t m a -> Job t m b 
Ap :: Job t m (a -> b) -> Job t m a -> Job t m b 
Bind :: Job t m a -> (a -> Job t m b) -> Job t m b 
Once :: Task t m a -> Job t m a 

newtype Task t (m :: Type -> Type) a Source #

System task.

Since: 0.11

Constructors

Task 

Fields

Instances

Instances details
Functor (t m) => Functor (Task t m) Source # 
Instance details

Defined in Aztecs.ECS.System

Methods

fmap :: (a -> b) -> Task t m a -> Task t m b #

(<$) :: a -> Task t m b -> Task t m a #

Running

runSystemT :: (MonadTrans t, Monad (t m), Monad m) => SystemT m a -> ((Entities -> Entities) -> t m Entities) -> t m a Source #