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)