edge 0.9.0.1 → 0.9.0.2
raw patch · 22 files changed
+432/−243 lines, 22 files
Files
- AWS.hs +5/−0
- AfterEffect/MineExplosion.hs +11/−10
- AfterEffect/SimpleExplosion.hs +11/−10
- Asteroid.hs +13/−18
- BigAsteroid.hs +13/−18
- Display.hs +30/−19
- Input.hs +10/−1
- Math.hs +0/−2
- ResourceTracker.hs +5/−8
- Resources.hs +41/−25
- Step.hs +36/−19
- Unit.hs +8/−19
- Unit/Smart/Master.hs +36/−11
- Unit/Smart/Ninja.hs +36/−11
- Unit/Smart/Saucer.hs +37/−12
- Unit/Smart/Sniper.hs +36/−11
- Unit/Smart/Zeus.hs +32/−10
- UnitUtil.hs +7/−7
- Universe.hs +13/−14
- Updating.hs +0/−1
- edge.cabal +2/−1
- edge.hs +50/−16
+ 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)