{-# 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)
class (MonoidBundle b, Monad m) => MonadAccess b m | m -> b where
spawn :: b -> m EntityID
spawn_ :: b -> m ()
spawn_ b
c = do
EntityID
_ <- b -> m EntityID
forall b (m :: * -> *). MonadAccess b m => b -> m EntityID
spawn b
c
() -> m ()
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
insert :: (Component a) => EntityID -> a -> m ()
lookup :: (Component a) => EntityID -> m (Maybe a)
remove :: (Component a) => EntityID -> m (Maybe a)
despawn :: EntityID -> m ()