Reverse dependency of Sound and Sound.Preload on Dodge.Data

This commit is contained in:
jgk
2021-02-23 21:00:42 +01:00
parent 47eb0b378b
commit 059913902a
4 changed files with 16 additions and 36 deletions
+4 -10
View File
@@ -5,6 +5,8 @@
module Dodge.Data
( module Dodge.Data
, Point2 (..)
, Sound (..)
, soundTime
)
where
-- imports {{{
@@ -13,6 +15,8 @@ import Picture.Data
import Geometry.Data
import Sound.Preload
import Control.Lens
import Control.Monad.State
import System.Random
@@ -243,15 +247,6 @@ data MenuState
| InGame
deriving (Eq,Ord)
data Sound = Sound { _soundTime :: Int
, _soundFadeTime :: Int
--, _soundChannel :: Maybe Int
, _soundChannel :: Maybe Mix.Channel
, _soundPos :: Maybe Point2
, _soundType :: Int
}
deriving (Eq,Ord,Show)
data Button = Button
{ _btPict :: Drawing
, _btPos :: Point2
@@ -696,7 +691,6 @@ makeLenses ''Button
makeLenses ''PSType
makeLenses ''PlacementSpot
makeLenses ''Room
makeLenses ''Sound
--
-- }}}
-24
View File
@@ -65,30 +65,6 @@ update w
updateSoundQueue = set soundQueue []
. set sounds M.empty
--updateSound :: World -> World
--updateSound = set soundQueue [] . stepSoundTimers
--stepSoundTimers :: World -> IO World
--stepSoundTimers w = M.foldrWithKey stepSoundTimer (return w) (_sounds w)
---- ok, this is hard to reason about-- bugs can occur because I am unsure when
---- everything is evaluated
--stepSoundTimer :: SoundOrigin -> Sound -> IO World -> IO World
--stepSoundTimer so s w =
-- case _soundChannel s of
-- Nothing -> do w1 <- w
-- let soundChunk = _loadedSounds w1 IM.! _soundType s
---- n <- Mix.playingCount
-- channel <- Mix.playOn (-1) (-1) soundChunk
-- -- w2 <- w -- Note that using w2 instead of w1 in the
-- -- final return breaks the sound sometimes, must be
-- -- something to do with order of evaluation
-- return $ set (sounds . ix so . soundChannel) (Just $ fromIntegral channel) w1
-- Just channel -> case _soundTime s of
-- x | x > 0 -> fmap (set (sounds . ix so . soundTime) (x-1)) w
-- | x <= 0 -> do Mix.fadeOut channel (fromIntegral $ _soundFadeTime s+ 1)
-- fmap (over sounds (M.delete so)) w
---- the sound fade doesn't seem to like being 0
updateLightSources w = set tempLightSources (catMaybes tlss) w'
where (w',tlss) = mapAccumR (\a b -> _tlsUpdate b a b) w $ _tempLightSources w
-1
View File
@@ -12,7 +12,6 @@ import qualified Data.Map as M
import Control.Lens
import Dodge.Data
playSoundQueue :: SoundData a -> [Int] -> IO ()
playSoundQueue sd ns =
+12 -1
View File
@@ -8,14 +8,25 @@ import qualified Data.Map as M
import Control.Lens
import Dodge.Data
import Geometry
data SoundData a = SoundData
{_loadedChunks :: IM.IntMap Mix.Chunk
,_playingSounds :: M.Map a Sound
}
data Sound = Sound { _soundTime :: Int
, _soundFadeTime :: Int
--, _soundChannel :: Maybe Int
, _soundChannel :: Maybe Mix.Channel
, _soundPos :: Maybe Point2
, _soundType :: Int
}
deriving (Eq,Ord,Show)
makeLenses ''SoundData
makeLenses ''Sound
cleanUpSoundPreload :: SoundData a -> IO ()