edge-0.8: ResourceTracker.hs
module ResourceTracker ( ResourceTracker()
, emptyResourceTracker
, getImage
, storeImage
, getSound
, storeSound
) where
import Graphics.Gloss.Data.Picture (Picture)
import qualified Graphics.Gloss.Data.Picture as GP
import Data.Map (Map)
import qualified Data.Map as M
-- import Control.Monad.State
import Sound.ALUT
data ResourceTracker = ResourceTracker { images :: Map String Picture
, sounds :: Map String Buffer
-- , defaultSound :: Buffer
}
deriving (Show)
emptyResourceTracker = ResourceTracker { images = M.empty
, sounds = M.empty
}
getImage :: ResourceTracker -> String -> Maybe Picture
getImage rt filename = M.lookup filename (images rt)
storeImage :: ResourceTracker -> String -> Picture -> ResourceTracker
storeImage rt filename pic = let nimages = M.insert filename pic (images rt) in
rt { images = nimages }
getSound :: ResourceTracker -> String -> Maybe Buffer
getSound rt filename = M.lookup filename (sounds rt)
storeSound :: ResourceTracker -> String -> Buffer -> ResourceTracker
storeSound rt filename buffer = let buffers' = M.insert filename buffer (sounds rt) in
rt { sounds = buffers' }