edge-0.9.0.2: BigAsteroid.hs
module BigAsteroid where
import Animation ( Animation(..) )
import Updating ( InternallyUpdating(..) )
import Graphics.Gloss.Data.Picture ()
import Graphics.Gloss.Data.Color ()
import Moving
( Locatable, Colliding(collisionRadius), Moving, newLocation' )
import qualified Moving as M ( Moving(..), Locatable(..) )
import Data.WrapAround ( WP, WM )
import ResourceTracker ( RT, ResourceTracker, protectedGetImage )
import GHC.Float ()
import Combat ( Damageable(..), Damaging(..) )
import Data.Maybe ()
import SpaceJunk ()
import Common ( Velocity )
radius = 30.0
damage = 100.0
data BigAsteroid = BigAsteroid { center :: WP
, velocity :: Velocity
, wmap :: WM
, rt :: RT
}
new :: ResourceTracker -> WM -> WP -> Velocity -> BigAsteroid
new a b c d = BigAsteroid { center = c
, velocity = d
, wmap = b
, rt = a
}
instance Animation BigAsteroid where
image self _ = protectedGetImage (rt self) "asteroidbig.bmp"
instance Locatable BigAsteroid where
center = BigAsteroid.center
instance Moving BigAsteroid where
velocity = BigAsteroid.velocity
instance Colliding BigAsteroid where
collisionRadius _ = radius
instance InternallyUpdating BigAsteroid where
preUpdate s _ = s
postUpdate s t = s { center = newLocation' s (wmap s) t }
instance Damageable BigAsteroid where
inflictDamage = const
instance Damaging BigAsteroid where
damageEnergy _ = damage