This commit is contained in:
2022-04-07 21:39:39 +01:00
parent 9d4b1d5d70
commit 100f776ddd
11 changed files with 46 additions and 99 deletions
+12 -12
View File
@@ -1,10 +1,7 @@
{-# LANGUAGE TupleSections #-}
module Dodge.Creature.Impulse
( impulsiveAI
, impulsiveAI'
, followImpulses
( impulsiveAI'
, followThenClearImpulses
, followThenClearImpulses'
) where
import Dodge.Data
import Dodge.Creature.Vocalization
@@ -18,6 +15,15 @@ import qualified Data.IntMap.Strict as IM
import System.Random
import Data.Bifunctor
--import Data.Maybe
--
impulsiveAIBeforeAfter
:: (World -> Creature -> Creature)
-> (World -> Creature -> Creature)
-> Creature -> World -> World
impulsiveAIBeforeAfter startup endup cr w = w' & creatures . ix (_crID cr) .~ endup w' cr'
where
w' = g w
(g,cr') = impulsiveAI startup cr w
impulsiveAI' :: (World -> Creature -> Creature)
-> Creature -> World -> World
@@ -32,15 +38,9 @@ impulsiveAI
-> (World -> World , Creature)
impulsiveAI f cr w = followImpulses w $ f w cr
followThenClearImpulses' :: Creature -> World -> World
followThenClearImpulses' cr w = f w & creatures . ix (_crID cr) .~ cr'
where
(f,cr') = followThenClearImpulses w cr
followThenClearImpulses :: World -> Creature -> (World -> World, Creature)
followThenClearImpulses w = second f . followImpulses w
where
f = crActionPlan . crImpulse .~ []
followThenClearImpulses :: Creature -> World -> World
followThenClearImpulses = impulsiveAIBeforeAfter (const id) (const $ crActionPlan . crImpulse .~ [])
followImpulses :: World -> Creature -> (World -> World, Creature)
followImpulses w cr = foldr f (id, cr) (_crImpulse $ _crActionPlan cr)