edge-0.8.16: SpaceJunk.hs
{-# LANGUAGE ExistentialQuantification #-}
module SpaceJunk where
import Animation ( Animation (..) )
import Updating ( InternallyUpdating (..) )
import Moving ( Colliding (..)
, Moving (..)
, Locatable (..)
)
import Combat ( Damaging (..)
, Damageable (..)
)
data SpaceJunk = forall a. ( InternallyUpdating a
, Colliding a
, Damaging a
, Damageable a
, Animation a
) => SpaceJunk a
instance Damaging SpaceJunk where
damageEnergy (SpaceJunk a) = damageEnergy a
instance Damageable SpaceJunk where
inflictDamage (SpaceJunk a) et = SpaceJunk (inflictDamage a et)
instance InternallyUpdating SpaceJunk where
preUpdate (SpaceJunk a) et = SpaceJunk (preUpdate a et)
postUpdate (SpaceJunk a) et = SpaceJunk (postUpdate a et)
instance Colliding SpaceJunk where
collisionRadius (SpaceJunk a) = collisionRadius a
instance Moving SpaceJunk where
velocity (SpaceJunk a) = velocity a
instance Locatable SpaceJunk where
center (SpaceJunk a) = center a
instance Animation SpaceJunk where
image (SpaceJunk a) = image a