{-# LANGUAGE ExistentialQuantification #-} {-| Module : SpaceJunk Description : Defines non-hostile but damaging space objects Copyright : (c) Christopher Howard, 2016 License : GPL-3 Maintainer : ch.howard@zoho.com -} module SpaceJunk where import Prelude () import Animation import Updating import Moving import Combat 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