module Mischief.ECS.Components.HooksDef where import Data.Data import Mischief.ECS.EventDef data ErasedHook c where ErasedHook :: forall e c m. (Event (e c), Typeable m) => (e c -> m ()) -> ErasedHook c newtype Hooks c = Hooks [ErasedHook c] deriving newtype (NonEmpty (Hooks c) -> Hooks c Hooks c -> Hooks c -> Hooks c (Hooks c -> Hooks c -> Hooks c) -> (NonEmpty (Hooks c) -> Hooks c) -> (forall b. Integral b => b -> Hooks c -> Hooks c) -> Semigroup (Hooks c) forall b. Integral b => b -> Hooks c -> Hooks c forall a. (a -> a -> a) -> (NonEmpty a -> a) -> (forall b. Integral b => b -> a -> a) -> Semigroup a forall k (c :: k). NonEmpty (Hooks c) -> Hooks c forall k (c :: k). Hooks c -> Hooks c -> Hooks c forall k (c :: k) b. Integral b => b -> Hooks c -> Hooks c $c<> :: forall k (c :: k). Hooks c -> Hooks c -> Hooks c <> :: Hooks c -> Hooks c -> Hooks c $csconcat :: forall k (c :: k). NonEmpty (Hooks c) -> Hooks c sconcat :: NonEmpty (Hooks c) -> Hooks c $cstimes :: forall k (c :: k) b. Integral b => b -> Hooks c -> Hooks c stimes :: forall b. Integral b => b -> Hooks c -> Hooks c Semigroup)