packages feed

mischief-ecs-0.2.0.0: src/Mischief/ECS/Observer.hs

module Mischief.ECS.Observer where

import Data.Data
import Data.Default
import GHC.Generics
import Mischief.ECS.Components
import Mischief.ECS.Components.Required
import Mischief.ECS.World

newtype Observer e = Observer (e -> System ())

instance (Typeable e) => Component (Observer e) where
  required = require @(EventProxy e)

data EventProxy e = EventProxy deriving (Component, Generic, Default)