packages feed

edge-0.8.16: 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)