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)