packages feed

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' }