module Mischief.ECS.App.SystemDef where

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

newtype SystemTick = SystemTick {SystemTick -> Tick
inner :: Tick}
  deriving stock ((forall x. SystemTick -> Rep SystemTick x)
-> (forall x. Rep SystemTick x -> SystemTick) -> Generic SystemTick
forall x. Rep SystemTick x -> SystemTick
forall x. SystemTick -> Rep SystemTick x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SystemTick -> Rep SystemTick x
from :: forall x. SystemTick -> Rep SystemTick x
$cto :: forall x. Rep SystemTick x -> SystemTick
to :: forall x. Rep SystemTick x -> SystemTick
Generic)
  deriving anyclass (Typeable SystemTick
Set DefaultComponentType
Hooks SystemTick
IsExclusive (RelExclusivity SystemTick)
(Typeable SystemTick, IsExclusive (RelExclusivity SystemTick)) =>
Set DefaultComponentType
-> Hooks SystemTick -> Component SystemTick
forall c.
(Typeable c, IsExclusive (RelExclusivity c)) =>
Set DefaultComponentType -> Hooks c -> Component c
$crequired :: Set DefaultComponentType
required :: Set DefaultComponentType
$chooks :: Hooks SystemTick
hooks :: Hooks SystemTick
Component, SystemTick
SystemTick -> Default SystemTick
forall a. a -> Default a
$cdef :: SystemTick
def :: SystemTick
Default)

newtype LastSystemTick = LastSystemTick {LastSystemTick -> Tick
inner :: Tick}
  deriving stock ((forall x. LastSystemTick -> Rep LastSystemTick x)
-> (forall x. Rep LastSystemTick x -> LastSystemTick)
-> Generic LastSystemTick
forall x. Rep LastSystemTick x -> LastSystemTick
forall x. LastSystemTick -> Rep LastSystemTick x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LastSystemTick -> Rep LastSystemTick x
from :: forall x. LastSystemTick -> Rep LastSystemTick x
$cto :: forall x. Rep LastSystemTick x -> LastSystemTick
to :: forall x. Rep LastSystemTick x -> LastSystemTick
Generic)
  deriving anyclass (Typeable LastSystemTick
Set DefaultComponentType
Hooks LastSystemTick
IsExclusive (RelExclusivity LastSystemTick)
(Typeable LastSystemTick,
 IsExclusive (RelExclusivity LastSystemTick)) =>
Set DefaultComponentType
-> Hooks LastSystemTick -> Component LastSystemTick
forall c.
(Typeable c, IsExclusive (RelExclusivity c)) =>
Set DefaultComponentType -> Hooks c -> Component c
$crequired :: Set DefaultComponentType
required :: Set DefaultComponentType
$chooks :: Hooks LastSystemTick
hooks :: Hooks LastSystemTick
Component, LastSystemTick
LastSystemTick -> Default LastSystemTick
forall a. a -> Default a
$cdef :: LastSystemTick
def :: LastSystemTick
Default)