19 lines
559 B
Haskell
19 lines
559 B
Haskell
module Dodge.Creature.Vocalization where
|
|
|
|
import Control.Lens
|
|
import Dodge.Data.World
|
|
import Sound.Data
|
|
import System.Random
|
|
|
|
vocalizationTest :: Creature -> Maybe SoundID
|
|
vocalizationTest cr = case cr ^? crVocalization . vcCoolDown of
|
|
Just 0 -> Just $ _vcSound $ _crVocalization cr
|
|
_ -> Nothing
|
|
|
|
resetCrVocCoolDown :: World -> Creature -> Creature
|
|
resetCrVocCoolDown w cr = case cr ^? crVocalization . vcMaxCoolDown of
|
|
Just (i,j) -> cr & crVocalization . vcCoolDown .~ x
|
|
where
|
|
x = fst $ randomR (i,j) (_randGen w)
|
|
Nothing -> cr
|