aztecs-0.14.0: A modular game engine and Entity-Component-System (ECS) for Haskell.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Aztecs.ECS.HSet

Documentation

data HSet (ts :: [Type]) where Source #

Constructors

HEmpty :: HSet ('[] :: [Type]) 
HCons :: forall t (ts1 :: [Type]). t -> HSet ts1 -> HSet (t ': ts1) 

Instances

Instances details
Schedule (m :: k) (HSet ('[] :: [Type])) Source # 
Instance details

Defined in Aztecs.ECS.Schedule.Internal

Associated Types

type Scheduled (m :: k) (HSet ('[] :: [Type])) 
Instance details

Defined in Aztecs.ECS.Schedule.Internal

type Scheduled (m :: k) (HSet ('[] :: [Type])) = HSet ('[] :: [Type])

Methods

schedule :: HSet ('[] :: [Type]) -> Scheduled m (HSet ('[] :: [Type])) Source #

(Monad m, Storage m s, Empty m (HSet ts)) => Empty (m :: Type -> Type) (HSet (s a ': ts) :: Type) Source # 
Instance details

Defined in Aztecs.Storage

Methods

empty :: m (HSet (s a ': ts)) Source #

Applicative m => Empty (m :: Type -> Type) (HSet ('[] :: [Type])) Source # 
Instance details

Defined in Aztecs.Storage

Methods

empty :: m (HSet ('[] :: [Type])) Source #

(Applicative m, ECS m) => Access m (HSet ('[] :: [Type])) Source # 
Instance details

Defined in Aztecs.ECS.Scheduler.Internal

Associated Types

type AccessType (HSet ('[] :: [Type])) 
Instance details

Defined in Aztecs.ECS.Scheduler.Internal

type AccessType (HSet ('[] :: [Type])) = '[] :: [Type]

Methods

access :: m (HSet ('[] :: [Type])) Source #

(Monad m, Execute' m (HSet level), Execute m (HSet restLevels)) => Execute m (HSet (HSet level ': restLevels)) Source # 
Instance details

Defined in Aztecs.ECS.Scheduler.Internal

Methods

execute :: HSet (HSet level ': restLevels) -> ExecutorT m () Source #

(Monad m, Execute' m systems, Execute m (HSet schedule)) => Execute m (HSet (systems ': schedule)) Source # 
Instance details

Defined in Aztecs.ECS.Executor

Methods

execute :: HSet (systems ': schedule) -> ExecutorT m () Source #

Applicative m => Execute m (HSet ('[] :: [Type])) Source # 
Instance details

Defined in Aztecs.ECS.Executor

Methods

execute :: HSet ('[] :: [Type]) -> ExecutorT m () Source #

(Monad m, System m sys, Access m (SystemIn m sys), ValidAccessInput (AccessType (SystemIn m sys))) => Execute' m (HSet '[sys]) Source # 
Instance details

Defined in Aztecs.ECS.Executor

Methods

execute' :: HSet '[sys] -> [m ()] Source #

(Monad m, System m sys, Access m (SystemIn m sys), ValidAccessInput (AccessType (SystemIn m sys)), Execute' m (HSet systems)) => Execute' m (HSet (sys ': systems)) Source # 
Instance details

Defined in Aztecs.ECS.Executor

Methods

execute' :: HSet (sys ': systems) -> [m ()] Source #

Execute' m (HSet ('[] :: [Type])) Source # 
Instance details

Defined in Aztecs.ECS.Executor

Methods

execute' :: HSet ('[] :: [Type]) -> [m ()] Source #

ShowHSet ts => Show (HSet ts) Source # 
Instance details

Defined in Aztecs.ECS.HSet

Methods

showsPrec :: Int -> HSet ts -> ShowS #

show :: HSet ts -> String #

showList :: [HSet ts] -> ShowS #

(AllSystems m systems, BuildSystemGraph systems ~ graph, TopologicalSort graph ~ levels, ScheduleLevels m levels ~ output, ScheduleLevelsBuilder m levels systems) => Scheduler (m :: Type -> Type) (HSet systems :: Type) Source # 
Instance details

Defined in Aztecs.ECS.Scheduler.Internal

Associated Types

type SchedulerInput (m :: Type -> Type) (HSet systems :: Type) 
Instance details

Defined in Aztecs.ECS.Scheduler.Internal

type SchedulerInput (m :: Type -> Type) (HSet systems :: Type) = systems
type SchedulerOutput (m :: Type -> Type) (HSet systems :: Type) 
Instance details

Defined in Aztecs.ECS.Scheduler.Internal

Methods

buildSchedule :: HSet (SchedulerInput m (HSet systems)) -> SchedulerOutput m (HSet systems) Source #

System m sys => Schedule (m :: Type -> Type) (HSet '[sys]) Source # 
Instance details

Defined in Aztecs.ECS.Schedule.Internal

Associated Types

type Scheduled (m :: Type -> Type) (HSet '[sys]) 
Instance details

Defined in Aztecs.ECS.Schedule.Internal

type Scheduled (m :: Type -> Type) (HSet '[sys]) = HSet (GroupsToNestedHSet m (GroupSystems m '[sys]))
type Scheduled (m :: Type -> Type) (HSet (sys ': rest)) 
Instance details

Defined in Aztecs.ECS.Schedule.Internal

type Scheduled (m :: Type -> Type) (HSet (sys ': rest)) = HSet (GroupsToNestedHSet m (GroupSystems m (sys ': rest)))

Methods

schedule :: HSet '[sys] -> Scheduled m (HSet '[sys]) Source #

(System m sys, AllSystems m rest, rest ~ (sys2 ': rest'), CompileGroups m (GroupSystems m (sys ': rest)) (sys ': rest)) => Schedule (m :: Type -> Type) (HSet (sys ': rest)) Source # 
Instance details

Defined in Aztecs.ECS.Schedule.Internal

Associated Types

type Scheduled (m :: Type -> Type) (HSet (sys ': rest)) 
Instance details

Defined in Aztecs.ECS.Schedule.Internal

type Scheduled (m :: Type -> Type) (HSet (sys ': rest)) = HSet (GroupsToNestedHSet m (GroupSystems m (sys ': rest)))

Methods

schedule :: HSet (sys ': rest) -> Scheduled m (HSet (sys ': rest)) Source #

type Scheduled (m :: k) (HSet ('[] :: [Type])) Source # 
Instance details

Defined in Aztecs.ECS.Schedule.Internal

type Scheduled (m :: k) (HSet ('[] :: [Type])) = HSet ('[] :: [Type])
type AccessType (HSet ('[] :: [Type])) Source # 
Instance details

Defined in Aztecs.ECS.Scheduler.Internal

type AccessType (HSet ('[] :: [Type])) = '[] :: [Type]
type SchedulerInput (m :: Type -> Type) (HSet systems :: Type) Source # 
Instance details

Defined in Aztecs.ECS.Scheduler.Internal

type SchedulerInput (m :: Type -> Type) (HSet systems :: Type) = systems
type SchedulerOutput (m :: Type -> Type) (HSet systems :: Type) Source # 
Instance details

Defined in Aztecs.ECS.Scheduler.Internal

type Scheduled (m :: Type -> Type) (HSet '[sys]) Source # 
Instance details

Defined in Aztecs.ECS.Schedule.Internal

type Scheduled (m :: Type -> Type) (HSet '[sys]) = HSet (GroupsToNestedHSet m (GroupSystems m '[sys]))
type Scheduled (m :: Type -> Type) (HSet (sys ': rest)) Source # 
Instance details

Defined in Aztecs.ECS.Schedule.Internal

type Scheduled (m :: Type -> Type) (HSet (sys ': rest)) = HSet (GroupsToNestedHSet m (GroupSystems m (sys ': rest)))

class Lookup t (ts :: [Type]) where Source #

Methods

lookup :: HSet ts -> t Source #

Instances

Instances details
Lookup t (t ': ts) Source # 
Instance details

Defined in Aztecs.ECS.HSet

Methods

lookup :: HSet (t ': ts) -> t Source #

Lookup t ts => Lookup t (u ': ts) Source # 
Instance details

Defined in Aztecs.ECS.HSet

Methods

lookup :: HSet (u ': ts) -> t Source #

class AdjustM (m :: Type -> Type) t (ts :: [Type]) where Source #

Methods

adjustM :: (t -> m t) -> HSet ts -> m (HSet ts) Source #

Instances

Instances details
Applicative m => AdjustM m t (t ': ts) Source # 
Instance details

Defined in Aztecs.ECS.HSet

Methods

adjustM :: (t -> m t) -> HSet (t ': ts) -> m (HSet (t ': ts)) Source #

(Functor m, AdjustM m t ts) => AdjustM m t (u ': ts) Source # 
Instance details

Defined in Aztecs.ECS.HSet

Methods

adjustM :: (t -> m t) -> HSet (u ': ts) -> m (HSet (u ': ts)) Source #

class Subset (subset :: [Type]) (superset :: [Type]) where Source #

Methods

subset :: HSet superset -> HSet subset Source #

Instances

Instances details
Subset ('[] :: [Type]) superset Source # 
Instance details

Defined in Aztecs.ECS.HSet

Methods

subset :: HSet superset -> HSet ('[] :: [Type]) Source #

(Lookup t superset, Subset ts superset) => Subset (t ': ts) superset Source # 
Instance details

Defined in Aztecs.ECS.HSet

Methods

subset :: HSet superset -> HSet (t ': ts) Source #