aztecs-0.7.0: src/Aztecs/ECS/Access/Class.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FunctionalDependencies #-}
module Aztecs.ECS.Access.Class (MonadAccess (..)) where
import Aztecs.ECS.Component (Component (..))
import Aztecs.ECS.Entity (EntityID (..))
import Aztecs.ECS.World.Bundle (MonoidBundle (..))
import Prelude hiding (all, lookup, map)
-- | Monadic access to a `World`.
class (MonoidBundle b, Monad m) => MonadAccess b m | m -> b where
-- | Spawn an entity with a component.
spawn :: b -> m EntityID
-- | Spawn an entity with a component.
spawn_ :: b -> m ()
spawn_ c = do
_ <- spawn c
return ()
-- | Insert a component into an entity.
insert :: (Component a) => EntityID -> a -> m ()
-- | Lookup a component on an entity.
lookup :: (Component a) => EntityID -> m (Maybe a)
-- | Remove a component from an entity.
remove :: (Component a) => EntityID -> m (Maybe a)
-- | Despawn an entity.
despawn :: EntityID -> m ()