edge-0.8.20: Universe.hs
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)
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 = []
}