Continue ai refactor
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user