27 lines
719 B
Haskell
27 lines
719 B
Haskell
module Dodge.Creature.Strategy
|
|
( goToPostStrat
|
|
)
|
|
where
|
|
import Dodge.Data
|
|
import Dodge.Creature.Test
|
|
import Dodge.Creature.Volition
|
|
|
|
import Data.List
|
|
|
|
goToPostStrat :: World -> Creature -> Strategy
|
|
goToPostStrat w cr = case find sentinelGoal $ _crGoal $ _crActionPlan cr of
|
|
Just (SentinelAt p _) -> StrategyActions (GetTo p)
|
|
[DoActionThen (WaitThen 150 holsterIfAiming)
|
|
$ DoActionThen (PathTo p)
|
|
NoAction
|
|
-- $ DoImpulses [ChangeStrategy WatchAndWait]
|
|
]
|
|
_ -> WatchAndWait
|
|
where
|
|
sentinelGoal (SentinelAt _ _) = True
|
|
sentinelGoal _ = False
|
|
holsterIfAiming
|
|
| crIsAiming (w,cr) = holsterWeapon
|
|
| otherwise = NoAction
|
|
|