Continue ai refactor

This commit is contained in:
2021-05-06 14:07:51 +02:00
parent 75c36e2c95
commit 436043b169
12 changed files with 94 additions and 35 deletions
+15 -8
View File
@@ -5,10 +5,18 @@ import Dodge.Creature.Rationality.Data
import Dodge.Creature.Action
import Dodge.Creature.Action.UseItem
import System.Random
import Control.Lens
impulsiveAI
:: (Impulse -> World -> Creature -> (World -> World, Creature))
-> World -> (World -> World,StdGen) -> Creature -> ((World -> World,StdGen), Maybe Creature)
impulsiveAI = undefined
impulsiveAI impulseFunc w (f,g) cr
= (\(f''' ,cr) -> ((f''',g),Just cr))
$ foldr
(\imp (f' , cr') -> let (f'', cr'') = impulseFunc imp w cr' in (f'' . f', cr''))
(id, cr)
(_crImpulse $ _crRationality cr)
applyBasicImpulse
:: Impulse
@@ -16,11 +24,10 @@ applyBasicImpulse
-> Creature
-> (World -> World , Creature)
applyBasicImpulse imp w cr = case imp of
Move p = (id, creatureMove p cr)
Turn a = (id, creatureTurn a cr)
UseItem = (crUseItem cr, cr)
SwitchToItem i = (id, cr & crInvSel .~ i)
Wait t = (id, cr & crRationality . crImpulse . waitTime -~ 1
_ = (id, cr)
DropItem = undefined
Move p -> (id, creatureMove p cr)
Turn a -> (id, creatureTurn a cr)
UseItem -> (crUseItem cr, cr)
SwitchToItem i -> (id, cr & crInvSel .~ i)
_ -> (id, cr)
DropItem -> undefined