packages feed

edge-0.9.0.2: ResourceTracker.hs

module ResourceTracker ( ResourceTracker()
                       , RT
                       , emptyResourceTracker
                       , getImage
                       , storeImage
                       , getSound
                       , storeSound
                       , protectedGetImage
                       ) where

import Graphics.Gloss.Data.Picture ( Picture(..) )
import Graphics.Gloss.Data.Color ( white )
import Data.Map ( Map, empty, insert )
import qualified Data.Map as M ( lookup )
import Sound.ALUT ( Buffer )
import Data.Maybe ( fromMaybe )

data ResourceTracker = ResourceTracker { images :: Map String Picture
                                       , sounds :: Map String Buffer
                                       }
  deriving (Show)

type RT = ResourceTracker

emptyResourceTracker = ResourceTracker { images = empty
                                       , sounds = empty
                                       }

getImage r n = M.lookup n (images r)

storeImage r n p = r { images = insert n p (images r) } 

getSound r n = M.lookup n (sounds r)

storeSound r n b = r { sounds = insert n b (sounds r) }

protectedGetImage a b = fromMaybe
                          (Scale 0.1 0.1
                             (Color white
                                (Text "missing image")))
                                   (getImage a b)