Remove Reader monad from multiple creature ais

This commit is contained in:
2021-12-11 19:32:20 +00:00
parent 37b81c2967
commit c847955b7c
7 changed files with 78 additions and 131 deletions
+12 -14
View File
@@ -10,7 +10,7 @@ import Dodge.Creature.Action
import Dodge.Creature.Volition
import Dodge.Creature.Strategy
import Dodge.Creature.ReaderUpdate
--import Dodge.Creature.ChooseTarget
import Dodge.Creature.ChainUpdates
import Dodge.Creature.Perception
import Dodge.Creature.State
--import Dodge.Creature.State.Data
@@ -23,16 +23,13 @@ import Picture
--import Data.Maybe
import qualified Data.IntMap.Strict as IM
import Control.Lens
import Control.Monad
--import Control.Monad.Trans.Reader
--import System.Random
spreadGunCrit :: Creature
spreadGunCrit = defaultCreature
{ _crPict = basicCrPict red
, _crUpdate = stateUpdate $ impulsiveAIR $
performActionsR
>=> watchUpdateStratR
, _crUpdate = stateUpdate' $ impulsiveAI $ chainCreatureUpdatesLR
[Left performActions
,Left $ watchUpdateStrat
[ (crHasTargetLOS, \_ _ -> StrategyActions (ShootAt 0)
[DoActionIf (not . crIsAiming) drawWeapon
,DoActionThen
@@ -42,13 +39,14 @@ spreadGunCrit = defaultCreature
)
, (crAwayFromPost, goToPostStrat)
]
>=> perceptionUpdate [0]
>=> doStrategyActionsR
>=> reloadOverrideR
>=> targetYouWhenCognizantR
>=> overrideInternalRRR
(\cr -> (&&) <$> crHasTargetR cr <*> crStratConMatchesR (GetTo (V2 0 0)) cr)
(\ cr -> pure $ cr & crActionPlan . crStrategy .~ WatchAndWait)
,Left $ perceptionUpdate' [0]
,Right $ doStrategyActions
,Right $ reloadOverride
,Left $ targetYouWhenCognizant
,Right $ overrideInternal
(\cr -> crHasTarget' cr && crStratConMatches' (GetTo (V2 0 0)) cr)
(\ cr -> cr & crActionPlan . crStrategy .~ WatchAndWait)
]
, _crActionPlan = ActionPlan
{ _crImpulse = []
, _crAction = []