packages feed

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