This commit is contained in:
2021-12-09 22:37:14 +00:00
parent 3c35a04531
commit e84b4a29e8
10 changed files with 154 additions and 43 deletions
+15 -16
View File
@@ -1,6 +1,7 @@
module Dodge.Creature.Impulse
( impulsiveAIR
, impulsiveAI
, impulsiveAI'
) where
import Dodge.Data
import Dodge.Creature.Vocalization
@@ -20,31 +21,29 @@ impulsiveAIR
-> Creature
-> World
-> (World -> World , Maybe Creature)
impulsiveAIR impf cr w = bimap id Just $ followImpulses w . ($ w) . runReader $ impf cr
impulsiveAIR impf cr w = second Just $ followImpulses w . ($ w) . runReader $ impf cr
impulsiveAI :: (World -> Creature -> Creature)
-> Creature
-> World
-> (World -> World , Maybe Creature)
impulsiveAI impf cr w = bimap id Just $ followImpulses w $ impf w cr
impulsiveAI impf cr w = second Just $ followImpulses w $ impf w cr
followImpulses
:: World
-> Creature
-> (World -> World, Creature)
followImpulses w cr
= foldr
foldf
(id, cr)
(_crImpulse $ _crActionPlan cr)
impulsiveAI' :: (World -> Creature -> Creature)
-> Creature
-> World
-> (World -> World , Creature)
impulsiveAI' impf cr w = followImpulses w $ impf w cr
followImpulses :: World -> Creature -> (World -> World, Creature)
followImpulses w cr = foldr
foldf
(id, cr)
(_crImpulse $ _crActionPlan cr)
where
foldf imp (f,cr') = first ( . f) $ followImpulse cr' w imp
followImpulse
:: Creature
-> World
-> Impulse
-> (World -> World , Creature)
followImpulse :: Creature -> World -> Impulse -> (World -> World , Creature)
followImpulse cr w imp = case imp of
Bark sid -> (soundStart (CrMouth cid) cpos sid Nothing, resetCrVocCoolDown cr)
Move p -> (id, crMvBy p cr)