packages feed

edge 0.9.0.1 → 0.9.0.2

raw patch · 22 files changed

+432/−243 lines, 22 files

Files

+ AWS.hs view
@@ -0,0 +1,5 @@+module AWS where++-- |Assumed Window Size.+data AWS = W1280 | W1024+  deriving (Show)
AfterEffect/MineExplosion.hs view
@@ -1,16 +1,17 @@ module AfterEffect.MineExplosion where -import Data.WrapAround-import Animation-import Updating-import qualified Moving as M+import Data.WrapAround ( WP, WM )+import Animation ( Audible(..), Animation(..), procOneTimeSnd )+import Updating ( Transient(..), InternallyUpdating(..) )+import qualified Moving as M ( Locatable(..) ) import Graphics.Gloss.Data.Picture-import Graphics.Gloss.Data.Color-import Sound.ALUT-import Data.Maybe-import ResourceTracker-import GHC.Float-import Common+    ( Picture(Blank, Color, Scale, Text) )+import Graphics.Gloss.Data.Color ( white )+import Sound.ALUT ( Source, stop )+import Data.Maybe ( isNothing, fromMaybe, fromJust )+import ResourceTracker ( RT, getImage )+import GHC.Float ()+import Common ( Time )  data MineExplosion = MineExplosion { center :: WP                                    , timeRemaining :: Time
AfterEffect/SimpleExplosion.hs view
@@ -1,16 +1,17 @@ module AfterEffect.SimpleExplosion where -import Data.WrapAround-import Animation-import Updating-import qualified Moving as M+import Data.WrapAround ( WP, WM )+import Animation ( Audible(..), Animation(..), procOneTimeSnd )+import Updating ( Transient(..), InternallyUpdating(..) )+import qualified Moving as M ( Locatable(..), newLocation ) import Graphics.Gloss.Data.Picture-import Graphics.Gloss.Data.Color-import Sound.ALUT-import Data.Maybe-import ResourceTracker-import GHC.Float-import Common+    ( Picture(Blank, Color, Scale, Text) )+import Graphics.Gloss.Data.Color ( white )+import Sound.ALUT ( Source, stop )+import Data.Maybe ( isNothing, fromMaybe, fromJust )+import ResourceTracker ( RT, getImage )+import GHC.Float ()+import Common ( Velocity, Time )  data SimpleExplosion = SimpleExplosion { center :: WP                                        , timeRemaining :: Time
Asteroid.hs view
@@ -1,23 +1,18 @@ module Asteroid where -import Animation-import Updating-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-import ResourceTracker-import GHC.Float-import Combat-import Data.Maybe-import SpaceJunk+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 = 15.0
BigAsteroid.hs view
@@ -1,23 +1,18 @@ module BigAsteroid where -import Animation-import Updating-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-import ResourceTracker-import GHC.Float-import Combat-import Data.Maybe-import SpaceJunk+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
Display.hs view
@@ -2,30 +2,41 @@  module Display (displayUniverse, AWS(..)) where -import Animation+import Animation ( Animation(..) ) import Universe+    ( Arena(afterFX, asteroids, focus, items, lance, lanceProjectiles,+            simpleUnits, smartUnits, unitProjectiles, wrapMap),+      Universe(arena, aws, level, levelMessageTimer, lives,+               panelActivationTimer, resourceTracker, startGameTimer) ) import Lance-import Data.Maybe-import Moving-import qualified Moving as M-import Star-import Data.WrapAround+    ( Lance(currentWeapon, deflectorCharge, godMode, integrity,+            inventory, swClock),+      swTimeLimit )+import Data.Maybe ( isNothing, fromMaybe )+import Moving ( Locatable )+import qualified Moving as M ( Locatable(center) )+import Star ()+import Data.WrapAround ( wrapmap, vectorRelation ) import Graphics.Gloss.Interface.IO.Game-import GHC.Float-import Combat-import AfterEffect ( AfterEffect ( AfterEffect ) )-import Unit-import Item-import ResourceTracker-import Math-import Resources-import Common (pairDup)+    ( Picture(Blank, Color, Line, Pictures, Polygon, Rotate, Scale,+              Text, Translate),+      yellow,+      white,+      red,+      green,+      cyan )+import GHC.Float ( double2Float )+import Combat ( Projectile(Projectile) )+import AfterEffect ( AfterEffect(AfterEffect) )+import Unit ( SmartUnit(SmartUnit), SimpleUnit(SimpleUnit) )+import Item ( Item(Item), ItemType(Health) )+import ResourceTracker ( getImage )+import Math ( remF, appPair )+import Resources ( stars )+import Common ()+import AWS ( AWS(..) )  data Displayable = forall a. (Locatable a, Animation a) => Displayable a---- |Assumed Window Size.-data AWS = W1280 | W1024-  deriving (Show)  displayUniverse u   = return $ Pictures $
Input.hs view
@@ -1,8 +1,17 @@ module Input where -import Universe+import Universe ( Arena(lance), Universe(arena, skipLevel) ) import Graphics.Gloss.Interface.IO.Game+    ( Event(EventKey),+      SpecialKey(KeyEnter, KeyLeft, KeyRight, KeySpace, KeyTab, KeyUp),+      Modifiers(Modifiers, alt, ctrl, shift),+      KeyState(Down, Up),+      Key(Char, SpecialKey) ) import Lance+    ( Lance(deflector, fireTrigger, godMode, inventory,+            linearThrusters, rotationalThrusters, swClock),+      RotationDirection(CCW, CW, Stable),+      changeCurrentWeapon )  handleInput :: Event -> Universe -> IO Universe 
Math.hs view
@@ -1,7 +1,5 @@ module Math where -import Data.Maybe- divBySum a b c = a / (b + c)  divideProduct a b c = a * b / c
ResourceTracker.hs view
@@ -8,15 +8,12 @@                        , protectedGetImage                        ) where -import Graphics.Gloss.Data.Picture ( Picture (..) )+import Graphics.Gloss.Data.Picture ( Picture(..) ) import Graphics.Gloss.Data.Color ( white )-import Data.Map ( Map-                , empty-                , insert-                )-import qualified Data.Map as M (lookup)-import Sound.ALUT (Buffer)-import Data.Maybe (fromMaybe)+import Data.Map ( Map, empty, insert )+import qualified Data.Map as M ( lookup )+import Sound.ALUT ( Buffer )+import Data.Maybe ( fromMaybe )  data ResourceTracker = ResourceTracker { images :: Map String Picture                                        , sounds :: Map String Buffer
Resources.hs view
@@ -1,33 +1,49 @@ module Resources where -import Paths_edge-import Graphics.Gloss.Data.Picture+import Paths_edge ( getDataFileName )+import Graphics.Gloss.Data.Picture ( loadBMP ) import Graphics.Gloss.Data.Color+    ( yellow,+      white,+      violet,+      rose,+      orange,+      magenta,+      green,+      cyan,+      chartreuse,+      blue,+      azure,+      aquamarine ) import ResourceTracker-import SpaceJunk-import qualified Asteroid as Asteroid-import qualified BigAsteroid as BigAsteroid-import Data.WrapAround-import Star-import Sound.ALUT+    ( emptyResourceTracker, storeImage, storeSound )+import SpaceJunk ( SpaceJunk(SpaceJunk) )+import qualified Asteroid as Asteroid ( new )+import qualified BigAsteroid as BigAsteroid ( new )+import Data.WrapAround ( wrappoint, wm )+import Star ( Star(Star, color, location) )+import Sound.ALUT ( SoundDataSource(File), createBuffer ) import Universe-import Unit-import qualified Unit.Simple.Turret as Turret-import qualified Unit.Smart.Tank as Tank-import qualified Unit.Smart.ATank as ATank-import qualified Unit.Smart.STank as STank-import qualified Unit.Smart.Death as Death-import qualified Unit.Smart.DeathII as DeathII-import qualified Unit.Smart.Master as Master-import qualified Unit.Smart.Ninja as Ninja-import qualified Unit.Smart.Saucer as Saucer-import qualified Unit.Smart.Sniper as Sniper-import qualified Unit.Smart.Zeus as Zeus-import Combat-import qualified Projectile.Mine as Mine-import Item-import System.Random-import Math (qArc)+    ( Arena(asteroids, items, simpleUnits, smartUnits, unitProjectiles,+            wrapMap),+      blankArena )+import Unit ( SmartUnit(SmartUnit), SimpleUnit(SimpleUnit) )+import qualified Unit.Simple.Turret as Turret ( new )+import qualified Unit.Smart.Tank as Tank ( new )+import qualified Unit.Smart.ATank as ATank ( new )+import qualified Unit.Smart.STank as STank ( new )+import qualified Unit.Smart.Death as Death ( new )+import qualified Unit.Smart.DeathII as DeathII ( new )+import qualified Unit.Smart.Master as Master ( new )+import qualified Unit.Smart.Ninja as Ninja ( new )+import qualified Unit.Smart.Saucer as Saucer ( new )+import qualified Unit.Smart.Sniper as Sniper ( new )+import qualified Unit.Smart.Zeus as Zeus ( new )+import Combat ( Projectile(Projectile) )+import qualified Projectile.Mine as Mine ( new )+import Item ( Item(Item), randomItemType )+import System.Random ( Random(randomRIO) )+import Math ( qArc )  initResources = let imageFiles = [ "asteroid.bmp"                                  , "asteroidbig.bmp"
Step.hs view
@@ -3,30 +3,47 @@ module Step (stepUniverse) where  import Universe-import SpaceJunk+    ( Arena(afterFX, asteroids, focus, items, lance, lanceProjectiles,+            simpleUnits, smartUnits, unitProjectiles, wrapMap),+      Universe(arena, blipSoundSource, delayRemaining, level,+               levelMessageTimer, lives, panelActivationTimer, queueBlipSound,+               resourceTracker, skipLevel, startGameTimer, levels) )+import SpaceJunk () import Moving-import Data.WrapAround+    ( Colliding(collisionRadius),+      Locatable(center),+      maxExpectedVelocity,+      collision,+      collisionWindow )+import Data.WrapAround ( wrappoint ) import Updating-import GHC.Float+    ( Observant(updateVision),+      Transient(expired'),+      InternallyUpdating(..) )+import GHC.Float ( float2Double ) import Lance-import Data.List (find)+    ( Lance(angle, godMode, inventory, swClock, center, velocity),+      new,+      processItem )+import Data.List () import Combat-import Data.Maybe ( fromMaybe-                  , isNothing-                  , fromJust-                  , isJust-                  )-import AfterEffect-import qualified AfterEffect.SimpleExplosion as SimpleExplosion-import Unit-import Animation-import Control.Monad-import System.IO-import System.Exit-import Resources+    ( Launcher(deployProjectiles),+      Projectile(Projectile),+      handleCollisionDamage,+      handleCollisionDamage' )+import Data.Maybe ( fromMaybe, isNothing, fromJust, isJust )+import AfterEffect ( AfterEffect(AfterEffect) )+import qualified AfterEffect.SimpleExplosion as SimpleExplosion ()+import Unit ()+import Animation ( Audible(processAudio) )+import Control.Monad ( (>=>) )+import System.IO ()+import System.Exit ()+import Resources ( initLevels ) import Sound.ALUT-import Common-import ResourceTracker+    ( HasSetter(($=)), ObjectName(genObjectNames), play, buffer )+import Common ( Time )+import ResourceTracker ( getSound )  delayOnDeath = 4.0 
Unit.hs view
@@ -5,25 +5,14 @@             , firing             ) where -import Animation ( Audible (..)-                 , Animation (..)-                 )-import Moving ( Locatable (..)-              , Colliding (..)-              , Moving (..)-              )-import Combat ( Damaging (..)-              , Damageable (..)-              , Launcher (..)-              , Projectile-              )-import Updating ( Transient (..)-                , InternallyUpdating (..)-                , Observant (..)-                )-import Common (Time, Angle)-import Data.Maybe (isNothing, fromJust)-+import Animation ( Audible(..), Animation(..) )+import Moving ( Locatable(..), Colliding(..), Moving(..) )+import Combat+    ( Damaging(..), Damageable(..), Launcher(..), Projectile )+import Updating+    ( Transient(..), InternallyUpdating(..), Observant(..) )+import Common ( Time )+import Data.Maybe () -- Simple, i.e., no sensory awareness and related A.I. data SimpleUnit = forall a. ( Animation a                        , Colliding a
Unit/Smart/Master.hs view
@@ -2,24 +2,49 @@                         , new                         ) where -import Data.WrapAround+import Data.WrapAround ( WP, WM, vectorRelation ) import Animation+    ( Audible(..),+      Animation(..),+      audioReferenceDistance,+      audioRolloffFactor ) import Graphics.Gloss.Data.Picture-import Graphics.Gloss.Data.Color-import GHC.Float-import Math-import ResourceTracker+    ( Picture(Blank, Color, Rotate, Scale, Text) )+import Graphics.Gloss.Data.Color ( white )+import GHC.Float ( double2Float )+import Math ( radToDeg, vectorDirection, targetingA, subV )+import ResourceTracker ( ResourceTracker, getImage, getSound ) import Updating+    ( Observant(..), Transient(..), InternallyUpdating(..) ) import qualified Moving as M+    ( Colliding(..),+      Moving(..),+      Locatable(..),+      newVelocity,+      newLocation ) import Combat-import qualified Projectile.Blade as P.Blade-import AfterEffect+    ( Launcher(..), Damageable(..), Damaging(..), Projectile(..) )+import qualified Projectile.Blade as P.Blade ( speed, new )+import AfterEffect ( AfterEffect(AfterEffect) ) import qualified AfterEffect.SimpleExplosion as SimpleExplosion-import Data.Maybe-import Universe hiding (wrapMap, resourceTracker)-import qualified Universe as U+    ( new )+import Data.Maybe ( isNothing, fromMaybe, fromJust )+import Universe ( Arena(lance) )+import qualified Universe as U ( Arena(wrapMap) ) import Sound.ALUT-import Common+    ( Vertex3(Vertex3),+      HasSetter(($=)),+      SourceRelative(Listener),+      Source,+      ObjectName(genObjectNames),+      stop,+      sourceRelative,+      sourcePosition,+      rolloffFactor,+      referenceDistance,+      play,+      buffer )+import Common ( Velocity, Angle, Time )  radialVelocity = pi/2 -- radians per second 
Unit/Smart/Ninja.hs view
@@ -2,24 +2,49 @@                         , new                         ) where -import Data.WrapAround+import Data.WrapAround ( WP, WM, vectorRelation ) import Animation+    ( Audible(..),+      Animation(..),+      audioReferenceDistance,+      audioRolloffFactor ) import Graphics.Gloss.Data.Picture-import Graphics.Gloss.Data.Color-import GHC.Float-import Math-import ResourceTracker+    ( Picture(Color, Rotate, Scale, Text) )+import Graphics.Gloss.Data.Color ( white )+import GHC.Float ( double2Float )+import Math ( radToDeg, vectorDirection, targetingA, subV )+import ResourceTracker ( ResourceTracker, getImage, getSound ) import Updating+    ( Observant(..), Transient(..), InternallyUpdating(..) ) import qualified Moving as M+    ( Colliding(..),+      Moving(..),+      Locatable(..),+      newVelocity,+      newLocation ) import Combat-import qualified Projectile.Blade as P.Blade-import AfterEffect+    ( Launcher(..), Damageable(..), Damaging(..), Projectile(..) )+import qualified Projectile.Blade as P.Blade ( speed, new )+import AfterEffect ( AfterEffect(AfterEffect) ) import qualified AfterEffect.SimpleExplosion as SimpleExplosion-import Data.Maybe-import Universe hiding (wrapMap, resourceTracker)-import qualified Universe as U+    ( new )+import Data.Maybe ( isNothing, fromMaybe, fromJust )+import Universe ( Arena(lance) )+import qualified Universe as U ( Arena(wrapMap) ) import Sound.ALUT-import Common+    ( Vertex3(Vertex3),+      HasSetter(($=)),+      SourceRelative(Listener),+      Source,+      ObjectName(genObjectNames),+      stop,+      sourceRelative,+      sourcePosition,+      rolloffFactor,+      referenceDistance,+      play,+      buffer )+import Common ( Velocity, Angle, Time )  radialVelocity = pi/2 -- radians per second 
Unit/Smart/Saucer.hs view
@@ -2,24 +2,49 @@                        , new                        ) where -import Data.WrapAround+import Data.WrapAround ( WP, WM, vectorRelation, distance ) import Animation-import Graphics.Gloss.Data.Picture-import Graphics.Gloss.Data.Color-import GHC.Float-import Math-import ResourceTracker+    ( Audible(..),+      Animation(..),+      audioReferenceDistance,+      audioRolloffFactor )+import Graphics.Gloss.Data.Picture ( Picture(Color, Scale, Text) )+import Graphics.Gloss.Data.Color ( white )+import GHC.Float ( double2Float )+import Math ( vectorDirection )+import ResourceTracker ( ResourceTracker, getImage, getSound ) import Updating+    ( Observant(..), Transient(..), InternallyUpdating(..) ) import qualified Moving as M+    ( Colliding(..),+      Moving(..),+      Locatable(..),+      newVelocity,+      newLocation ) import Combat-import qualified Projectile.Pellet as P.Pellet-import AfterEffect+    ( Launcher(..), Damageable(..), Damaging(..), Projectile(..) )+import qualified Projectile.Pellet as P.Pellet ( range, new )+import AfterEffect ( AfterEffect(AfterEffect) ) import qualified AfterEffect.SimpleExplosion as SimpleExplosion-import Data.Maybe-import Universe hiding (wrapMap, resourceTracker)-import qualified Universe as U+    ( new )+import Data.Maybe ( isNothing, fromMaybe, fromJust )+import Universe ( Arena(lance) )+import qualified Universe as U () import Sound.ALUT-import Common+    ( Vertex3(Vertex3),+      HasSetter(($=)),+      SourceRelative(Listener),+      Source,+      ObjectName(genObjectNames),+      stop,+      sourceRelative,+      sourcePosition,+      rolloffFactor,+      referenceDistance,+      play,+      buffer )+import Common ( Velocity, Angle, Time )+  radialVelocity = pi -- radians per second 
Unit/Smart/Sniper.hs view
@@ -2,24 +2,49 @@                        , new                        ) where -import Data.WrapAround+import Data.WrapAround ( WP, WM, vectorRelation ) import Animation+    ( Audible(..),+      Animation(..),+      audioReferenceDistance,+      audioRolloffFactor ) import Graphics.Gloss.Data.Picture-import Graphics.Gloss.Data.Color-import GHC.Float-import Math-import ResourceTracker+    ( Picture(Color, Rotate, Scale, Text) )+import Graphics.Gloss.Data.Color ( white )+import GHC.Float ( double2Float )+import Math ( radToDeg, vectorDirection, targetingA, subV )+import ResourceTracker ( ResourceTracker, getImage, getSound ) import Updating+    ( Observant(..), Transient(..), InternallyUpdating(..) ) import qualified Moving as M+    ( Colliding(..),+      Moving(..),+      Locatable(..),+      newVelocity,+      newLocation ) import Combat-import qualified Projectile.BulletSII as P.BulletSII-import AfterEffect+    ( Launcher(..), Damageable(..), Damaging(..), Projectile(..) )+import qualified Projectile.BulletSII as P.BulletSII ( speed, new )+import AfterEffect ( AfterEffect(AfterEffect) ) import qualified AfterEffect.SimpleExplosion as SimpleExplosion-import Data.Maybe-import Universe hiding (wrapMap, resourceTracker)-import qualified Universe as U+    ( new )+import Data.Maybe ( isNothing, fromMaybe, fromJust )+import Universe ( Arena(lance) )+import qualified Universe as U ( Arena(wrapMap) ) import Sound.ALUT-import Common+    ( Vertex3(Vertex3),+      HasSetter(($=)),+      SourceRelative(Listener),+      Source,+      ObjectName(genObjectNames),+      stop,+      sourceRelative,+      sourcePosition,+      rolloffFactor,+      referenceDistance,+      play,+      buffer )+import Common ( Velocity, Angle, Time )  radialVelocity = pi/6 -- radians per second 
Unit/Smart/Zeus.hs view
@@ -2,24 +2,46 @@                        , new                        ) where -import Data.WrapAround+import Data.WrapAround ( WP, WM, vectorRelation ) import Animation+    ( Audible(..),+      Animation(..),+      audioReferenceDistance,+      audioRolloffFactor ) import Graphics.Gloss.Data.Picture-import Graphics.Gloss.Data.Color-import GHC.Float-import Math-import ResourceTracker+    ( Picture(Color, Pictures, Rotate, Scale, Text) )+import Graphics.Gloss.Data.Color ( white )+import GHC.Float ( double2Float )+import Math ( radToDeg, targetingA, subV )+import ResourceTracker ( ResourceTracker, getImage, getSound ) import Updating+    ( Observant(..), Transient(..), InternallyUpdating(..) ) import qualified Moving as M+    ( Colliding(..), Moving(..), Locatable(..) ) import Combat+    ( Launcher(..), Damageable(..), Damaging(..), Projectile(..) ) import qualified Projectile.Interceptor as P.Interceptor-import AfterEffect+    ( speed, new )+import AfterEffect ( AfterEffect(AfterEffect) ) import qualified AfterEffect.SimpleExplosion as SimpleExplosion-import Data.Maybe-import Universe hiding (wrapMap, resourceTracker)-import qualified Universe as U+    ( new )+import Data.Maybe ( isNothing, fromMaybe, fromJust )+import Universe ( Arena(lance) )+import qualified Universe as U ( Arena(wrapMap) ) import Sound.ALUT-import Common+    ( Vertex3(Vertex3),+      HasSetter(($=)),+      SourceRelative(Listener),+      Source,+      ObjectName(genObjectNames),+      stop,+      sourceRelative,+      sourcePosition,+      rolloffFactor,+      referenceDistance,+      play,+      buffer )+import Common ( Angle, Time )  radialVelocity = pi -- radians per second 
UnitUtil.hs view
@@ -1,12 +1,12 @@ module UnitUtil where -import Lance (Lance)-import Math-import Data.WrapAround-import Moving-import Data.Maybe-import Common-import Universe+import Lance ()+import Math ( vectorDirection )+import Data.WrapAround ( vectorRelation )+import Moving ( Moving(..), Locatable(..) )+import Data.Maybe ( isNothing, fromJust )+import Common ( Angle, Time )+import Universe ( Arena(lance, wrapMap) )  adjAngle :: (Moving a)          => a -- ^ the object whose angle is adjusted
Universe.hs view
@@ -1,18 +1,17 @@ module Universe where-import Lance-import Star-import Data.WrapAround-import SpaceJunk-import Combat-import AfterEffect-import Unit ( SimpleUnit-            , SmartUnit-            )-import ResourceTracker-import Item-import Common-import Sound.ALUT-import {-# SOURCE #-} Display (AWS)++import Lance ( Lance )+import Star ()+import Data.WrapAround ( WP, WM, wrappoint, wrapmap )+import SpaceJunk ( SpaceJunk )+import Combat ( Projectile )+import AfterEffect ( AfterEffect )+import Unit ( SimpleUnit, SmartUnit )+import ResourceTracker ( ResourceTracker )+import Item ( Item )+import Common ( Time )+import Sound.ALUT ( Source )+import AWS ( AWS )  data Arena = Arena { lance :: Maybe Lance                    , focus :: WP
Updating.hs view
@@ -2,7 +2,6 @@  import {-# SOURCE #-} AfterEffect ( AfterEffect ) import {-# SOURCE #-} Universe ( Arena )- import Common (Time)  class InternallyUpdating a where
edge.cabal view
@@ -8,7 +8,7 @@ -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for -- standards guiding when and how versions should be incremented. -Version:             0.9.0.1+Version:             0.9.0.2  -- A short (one-line) description of the package. Synopsis:            Top view space combat arcade game@@ -72,6 +72,7 @@   -- Modules not exported by this package.   Other-modules:     Lance                      , Asteroid+                     , AWS                      , BigAsteroid                      , Common                      , Math
edge.hs view
@@ -1,23 +1,57 @@-import Data.WrapAround+import Data.Function ( ($) )+import Control.Monad ( return )+import Text.Show ( Show )+import Data.Bool ( Bool ( True, False ), not )+import Data.Maybe ( Maybe ( Just, Nothing ) )+import Data.List ( null, head )+import System.IO.Error ( userError, ioError )+import Data.WrapAround ( wrappoint ) import Graphics.Gloss.Interface.IO.Game-import Lance-import Resources-import Input+    ( black, Display(InWindow), playIO )+import Lance ( new )+import Resources ( initResources, initLevels )+import Input ( handleInput ) import Universe-import Display-import Step-import Unit-import Unit.Simple.Turret (Turret)-import qualified Unit.Simple.Turret as Turret-import ResourceTracker+    ( Arena(lance, wrapMap),+      Universe(Universe, arena, aws, blipSoundSource, delayRemaining,+               level, levelMessageTimer, lives, panelActivationTimer,+               queueBlipSound, resourceTracker, skipLevel, startGameTimer,+               levels) )+import Display ( AWS(..), displayUniverse )+import AWS ()+import Step ( stepUniverse )+import Unit ()+import Unit.Simple.Turret ()+import qualified Unit.Simple.Turret as Turret ()+import ResourceTracker ( getSound ) import Sound.ALUT-import Data.Maybe-import System.IO-import Data.List ( intersperse )-import Animation+    ( HasSetter(($=)),+      HasGetter(get),+      LoopingMode(Looping),+      ALError(ALError),+      ObjectName(genObjectNames),+      sourceGain,+      play,+      loopingMode,+      buffer,+      alErrors,+      distanceModel,+      withProgNameAndArgs,+      runALUT )+import Data.Maybe ()+import System.IO ( stderr, hPutStrLn )+import Data.List ( intersperse, concat )+import Animation ( audioDistanceModel ) import System.Console.CmdTheLine-import Control.Applicative-import qualified Paths_edge as P+    ( TermInfo(termName, version),+      OptInfo(optDoc),+      eval,+      defTI,+      value,+      optInfo,+      opt )+import Control.Applicative ( (<$>) )+import qualified Paths_edge as P ( version ) import Data.Version ( showVersion )  displayMode a = InWindow "The Edge" a (0, 0)