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)