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 :: Set DefaultComponentType required = forall b. RequiredBundle b => Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Set DefaultComponentType require @(EventProxy e) data EventProxy e = EventProxy deriving (Typeable (EventProxy e) [HookRel (EventProxy e)] [Hook (EventProxy e)] Set DefaultComponentType IsExclusive (IsExclusiveRel (EventProxy e)) (Typeable (EventProxy e), IsExclusive (IsExclusiveRel (EventProxy e))) => Set DefaultComponentType -> [Hook (EventProxy e)] -> [Hook (EventProxy e)] -> [Hook (EventProxy e)] -> [HookRel (EventProxy e)] -> [HookRel (EventProxy e)] -> [HookRel (EventProxy e)] -> Component (EventProxy e) forall c. (Typeable c, IsExclusive (IsExclusiveRel c)) => Set DefaultComponentType -> [Hook c] -> [Hook c] -> [Hook c] -> [HookRel c] -> [HookRel c] -> [HookRel c] -> Component c forall k (e :: k). (Typeable e, Typeable k) => Typeable (EventProxy e) forall k (e :: k). (Typeable e, Typeable k) => [HookRel (EventProxy e)] forall k (e :: k). (Typeable e, Typeable k) => [Hook (EventProxy e)] forall k (e :: k). (Typeable e, Typeable k) => Set DefaultComponentType forall k (e :: k). (Typeable e, Typeable k) => IsExclusive (IsExclusiveRel (EventProxy e)) $crequired :: forall k (e :: k). (Typeable e, Typeable k) => Set DefaultComponentType required :: Set DefaultComponentType $conAdd :: forall k (e :: k). (Typeable e, Typeable k) => [Hook (EventProxy e)] onAdd :: [Hook (EventProxy e)] $conSet :: forall k (e :: k). (Typeable e, Typeable k) => [Hook (EventProxy e)] onSet :: [Hook (EventProxy e)] $conRemove :: forall k (e :: k). (Typeable e, Typeable k) => [Hook (EventProxy e)] onRemove :: [Hook (EventProxy e)] $conAddRel :: forall k (e :: k). (Typeable e, Typeable k) => [HookRel (EventProxy e)] onAddRel :: [HookRel (EventProxy e)] $conSetRel :: forall k (e :: k). (Typeable e, Typeable k) => [HookRel (EventProxy e)] onSetRel :: [HookRel (EventProxy e)] $conRemoveRel :: forall k (e :: k). (Typeable e, Typeable k) => [HookRel (EventProxy e)] onRemoveRel :: [HookRel (EventProxy e)] Component, (forall x. EventProxy e -> Rep (EventProxy e) x) -> (forall x. Rep (EventProxy e) x -> EventProxy e) -> Generic (EventProxy e) forall x. Rep (EventProxy e) x -> EventProxy e forall x. EventProxy e -> Rep (EventProxy e) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall k (e :: k) x. Rep (EventProxy e) x -> EventProxy e forall k (e :: k) x. EventProxy e -> Rep (EventProxy e) x $cfrom :: forall k (e :: k) x. EventProxy e -> Rep (EventProxy e) x from :: forall x. EventProxy e -> Rep (EventProxy e) x $cto :: forall k (e :: k) x. Rep (EventProxy e) x -> EventProxy e to :: forall x. Rep (EventProxy e) x -> EventProxy e Generic, EventProxy e EventProxy e -> Default (EventProxy e) forall a. a -> Default a forall k (e :: k). EventProxy e $cdef :: forall k (e :: k). EventProxy e def :: EventProxy e Default)