packages feed

edge-0.8.10: 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

data Arena = Arena { lance :: Maybe Lance
                   , focus :: WrapPoint
                   , wrapMap :: WrapMap
                   , 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
                         }

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