17 lines
550 B
Haskell
17 lines
550 B
Haskell
module Dodge.Creature.Update where
|
|
import Dodge.Data
|
|
import Dodge.Creature.State
|
|
import Dodge.Creature.Impulse
|
|
import Dodge.Creature.ChainUpdates
|
|
import LensHelp
|
|
|
|
import System.Random
|
|
|
|
-- bit of a hack to get new random generators after each creature's update
|
|
defaultImpulsive :: [World -> Creature -> Creature]
|
|
-> Creature -> World -> World
|
|
defaultImpulsive = fmap (fmap updateRandGen) . stateUpdate . impulsiveAIBefore . chainCreatureUpdates
|
|
where
|
|
updateRandGen w = let (_,g) = randomR (0,1::Int) (_randGen w)
|
|
in w & randGen .~ g
|