edge-0.9.0.2: Universe.hs
module Universe where
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
, wrapMap :: WM
, asteroids :: [SpaceJunk]
, lanceProjectiles :: [Projectile]
, afterFX :: [AfterEffect]
, simpleUnits :: [SimpleUnit]
, smartUnits :: [SmartUnit]
, unitProjectiles :: [Projectile]
, items :: [Item]
}
data Universe = Universe { arena :: Arena
, level :: Int
, levels :: [Arena]
, lives :: Integer
, delayRemaining :: Double
, resourceTracker :: ResourceTracker
, skipLevel :: Bool
, levelMessageTimer :: Maybe Time
, panelActivationTimer :: Time
, startGameTimer :: Time
, queueBlipSound :: Bool
, blipSoundSource :: Maybe Source
, aws :: AWS
}
blankArena width height =
let wmap = wrapmap width height in
Arena { lance = Nothing
, focus = wrappoint wmap (0, 0)
, Universe.wrapMap = wmap
, asteroids = []
, lanceProjectiles = []
, afterFX = []
, simpleUnits = []
, smartUnits = []
, unitProjectiles = []
, items = []
}