Refactor crPos to be a V3
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
module Dodge.CreatureEffect where
|
||||
|
||||
import Linear
|
||||
import Data.Maybe
|
||||
import Dodge.Base.Collide
|
||||
import Dodge.Creature.Test
|
||||
@@ -28,7 +29,7 @@ doIntImp ii = case ii of
|
||||
doCrImp :: CrImp -> Creature -> Impulse
|
||||
doCrImp ci = case ci of
|
||||
NoCrImp -> const ImpulseNothing
|
||||
TurnTowardCr x -> \cr -> TurnToward (_crPos cr) x
|
||||
TurnTowardCr x -> \cr -> TurnToward (cr ^. crPos . _xy) x
|
||||
|
||||
doP2Imp :: P2Imp -> Point2 -> Impulse
|
||||
doP2Imp p2i = case p2i of
|
||||
@@ -60,7 +61,8 @@ doMCrAc mca = case mca of
|
||||
|
||||
doCrAc :: CrAc -> Creature -> Action
|
||||
doCrAc ca = case ca of
|
||||
CrTurnAround -> \cr -> TurnToPoint (_crPos cr -.- 10 *.* unitVectorAtAngle (_crDir cr))
|
||||
CrTurnAround -> \cr -> TurnToPoint
|
||||
(cr ^. crPos . _xy -.- 10 *.* unitVectorAtAngle (_crDir cr))
|
||||
CrFleeFromTarget -> fleeFromTarget
|
||||
|
||||
fleeFromTarget :: Creature -> Action
|
||||
@@ -77,7 +79,7 @@ doMP2Ac mp2a = case mp2a of
|
||||
doCrWdAc :: CrWdAc -> Creature -> World -> Action
|
||||
doCrWdAc cw = case cw of
|
||||
CrWdBFSThenReturn t -> \cr w -> fromMaybe NoAction $ do
|
||||
n <- walkableNodeNear w (_crPos cr)
|
||||
n <- walkableNodeNear w (cr ^. crPos . _xy)
|
||||
let as = take 20 $ map PathTo $ bfsNodePoints n w
|
||||
return $
|
||||
DoReplicate t $
|
||||
@@ -97,10 +99,10 @@ chooseMovementSpreadGun cr w
|
||||
DoImpulses [TurnToward p 0.26, MoveForward 3]
|
||||
where
|
||||
d = dist cpos p
|
||||
cpos = _crPos cr
|
||||
cpos = cr ^. crPos . _xy
|
||||
--tcr = _creatures (_cWorld w) IM.! 0
|
||||
tcr = w ^?! cWorld . lWorld . creatures . ix 0
|
||||
p = _crPos tcr
|
||||
p = tcr ^. crPos . _xy
|
||||
|
||||
chooseMovementLtAuto :: Creature -> World -> Action
|
||||
chooseMovementLtAuto cr w
|
||||
@@ -111,13 +113,15 @@ chooseMovementLtAuto cr w
|
||||
| otherwise =
|
||||
DoImpulses [UseItem, TurnToward p' 0.05, Move (V2 0 3)]
|
||||
where
|
||||
cpos = _crPos cr
|
||||
cpos = cr ^. crPos . _xy
|
||||
tcr = w ^?! cWorld . lWorld . creatures . ix 0
|
||||
p = _crPos tcr
|
||||
p = tcr ^. crPos . _xy
|
||||
v = vNormal $ p -.- cpos
|
||||
p' = p +.+ 0.5 *.* (v -.- 20 *.* normalizeV v)
|
||||
|
||||
fleeFrom :: Creature -> Maybe Creature -> Action
|
||||
fleeFrom cr mtcr = case mtcr of
|
||||
Just tcr -> DoImpulses [MoveForward 3, TurnToward ((2 *.* _crPos cr) -.- _crPos tcr) (pi / 4)]
|
||||
Just tcr -> DoImpulses
|
||||
[MoveForward 3
|
||||
, TurnToward ((2 *.* (cr ^. crPos ._xy)) -.- (tcr ^. crPos . _xy)) (pi / 4)]
|
||||
Nothing -> NoAction
|
||||
|
||||
Reference in New Issue
Block a user