{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}
module Aztecs.ECS.Event
( Event,
OnInsert (..),
OnChange (..),
OnRemove (..),
)
where
import Data.Typeable
import GHC.Generics
class (Typeable e) => Event e
newtype OnInsert a = OnInsert {forall a. OnInsert a -> a
unOnInsert :: a}
deriving (Int -> OnInsert a -> ShowS
[OnInsert a] -> ShowS
OnInsert a -> String
(Int -> OnInsert a -> ShowS)
-> (OnInsert a -> String)
-> ([OnInsert a] -> ShowS)
-> Show (OnInsert a)
forall a. Show a => Int -> OnInsert a -> ShowS
forall a. Show a => [OnInsert a] -> ShowS
forall a. Show a => OnInsert a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> OnInsert a -> ShowS
showsPrec :: Int -> OnInsert a -> ShowS
$cshow :: forall a. Show a => OnInsert a -> String
show :: OnInsert a -> String
$cshowList :: forall a. Show a => [OnInsert a] -> ShowS
showList :: [OnInsert a] -> ShowS
Show, OnInsert a -> OnInsert a -> Bool
(OnInsert a -> OnInsert a -> Bool)
-> (OnInsert a -> OnInsert a -> Bool) -> Eq (OnInsert a)
forall a. Eq a => OnInsert a -> OnInsert a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => OnInsert a -> OnInsert a -> Bool
== :: OnInsert a -> OnInsert a -> Bool
$c/= :: forall a. Eq a => OnInsert a -> OnInsert a -> Bool
/= :: OnInsert a -> OnInsert a -> Bool
Eq, (forall x. OnInsert a -> Rep (OnInsert a) x)
-> (forall x. Rep (OnInsert a) x -> OnInsert a)
-> Generic (OnInsert a)
forall x. Rep (OnInsert a) x -> OnInsert a
forall x. OnInsert a -> Rep (OnInsert a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (OnInsert a) x -> OnInsert a
forall a x. OnInsert a -> Rep (OnInsert a) x
$cfrom :: forall a x. OnInsert a -> Rep (OnInsert a) x
from :: forall x. OnInsert a -> Rep (OnInsert a) x
$cto :: forall a x. Rep (OnInsert a) x -> OnInsert a
to :: forall x. Rep (OnInsert a) x -> OnInsert a
Generic)
instance (Typeable a) => Event (OnInsert a)
newtype OnChange a = OnChange {forall a. OnChange a -> a
unOnChange :: a}
deriving (Int -> OnChange a -> ShowS
[OnChange a] -> ShowS
OnChange a -> String
(Int -> OnChange a -> ShowS)
-> (OnChange a -> String)
-> ([OnChange a] -> ShowS)
-> Show (OnChange a)
forall a. Show a => Int -> OnChange a -> ShowS
forall a. Show a => [OnChange a] -> ShowS
forall a. Show a => OnChange a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> OnChange a -> ShowS
showsPrec :: Int -> OnChange a -> ShowS
$cshow :: forall a. Show a => OnChange a -> String
show :: OnChange a -> String
$cshowList :: forall a. Show a => [OnChange a] -> ShowS
showList :: [OnChange a] -> ShowS
Show, OnChange a -> OnChange a -> Bool
(OnChange a -> OnChange a -> Bool)
-> (OnChange a -> OnChange a -> Bool) -> Eq (OnChange a)
forall a. Eq a => OnChange a -> OnChange a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => OnChange a -> OnChange a -> Bool
== :: OnChange a -> OnChange a -> Bool
$c/= :: forall a. Eq a => OnChange a -> OnChange a -> Bool
/= :: OnChange a -> OnChange a -> Bool
Eq, (forall x. OnChange a -> Rep (OnChange a) x)
-> (forall x. Rep (OnChange a) x -> OnChange a)
-> Generic (OnChange a)
forall x. Rep (OnChange a) x -> OnChange a
forall x. OnChange a -> Rep (OnChange a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (OnChange a) x -> OnChange a
forall a x. OnChange a -> Rep (OnChange a) x
$cfrom :: forall a x. OnChange a -> Rep (OnChange a) x
from :: forall x. OnChange a -> Rep (OnChange a) x
$cto :: forall a x. Rep (OnChange a) x -> OnChange a
to :: forall x. Rep (OnChange a) x -> OnChange a
Generic)
instance (Typeable a) => Event (OnChange a)
newtype OnRemove a = OnRemove {forall a. OnRemove a -> a
unOnRemove :: a}
deriving (Int -> OnRemove a -> ShowS
[OnRemove a] -> ShowS
OnRemove a -> String
(Int -> OnRemove a -> ShowS)
-> (OnRemove a -> String)
-> ([OnRemove a] -> ShowS)
-> Show (OnRemove a)
forall a. Show a => Int -> OnRemove a -> ShowS
forall a. Show a => [OnRemove a] -> ShowS
forall a. Show a => OnRemove a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> OnRemove a -> ShowS
showsPrec :: Int -> OnRemove a -> ShowS
$cshow :: forall a. Show a => OnRemove a -> String
show :: OnRemove a -> String
$cshowList :: forall a. Show a => [OnRemove a] -> ShowS
showList :: [OnRemove a] -> ShowS
Show, OnRemove a -> OnRemove a -> Bool
(OnRemove a -> OnRemove a -> Bool)
-> (OnRemove a -> OnRemove a -> Bool) -> Eq (OnRemove a)
forall a. Eq a => OnRemove a -> OnRemove a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => OnRemove a -> OnRemove a -> Bool
== :: OnRemove a -> OnRemove a -> Bool
$c/= :: forall a. Eq a => OnRemove a -> OnRemove a -> Bool
/= :: OnRemove a -> OnRemove a -> Bool
Eq, (forall x. OnRemove a -> Rep (OnRemove a) x)
-> (forall x. Rep (OnRemove a) x -> OnRemove a)
-> Generic (OnRemove a)
forall x. Rep (OnRemove a) x -> OnRemove a
forall x. OnRemove a -> Rep (OnRemove a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (OnRemove a) x -> OnRemove a
forall a x. OnRemove a -> Rep (OnRemove a) x
$cfrom :: forall a x. OnRemove a -> Rep (OnRemove a) x
from :: forall x. OnRemove a -> Rep (OnRemove a) x
$cto :: forall a x. Rep (OnRemove a) x -> OnRemove a
to :: forall x. Rep (OnRemove a) x -> OnRemove a
Generic)
instance (Typeable a) => Event (OnRemove a)