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 = [] }