From 44f767841a46f3c46dcc4b53e6ec40d75bc553bd Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 8 Jan 2023 21:00:49 +0000 Subject: [PATCH] Remove strafing when not aiming, only move forward --- src/Dodge/Creature/YourControl.hs | 18 ++++++++++++------ src/Dodge/Data/Creature.hs | 1 + src/Dodge/Default/Creature.hs | 1 + 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/Dodge/Creature/YourControl.hs b/src/Dodge/Creature/YourControl.hs index c74ddeedd..3ce11398a 100644 --- a/src/Dodge/Creature/YourControl.hs +++ b/src/Dodge/Creature/YourControl.hs @@ -40,11 +40,13 @@ wasdWithAiming :: Creature wasdWithAiming w speed cr -- | isAiming = addAnyTwist $ set crDir mouseDir $ theMovement cr - | isAiming = addAnyTwist $ aimTurn mouseDir $ theMovement cr + | isAiming = addAnyTwist $ aimTurn mouseDir $ theMovement $ setMvAim cr | crIsReloading cr && SDL.ButtonRight `M.member` _mouseButtons (_input w) = - addAnyTwist $ set crDir (mouseDir + anytwist) $ theMovement cr - | otherwise = theMovement $ theTurn $ removeTwist cr + addAnyTwist $ aimTurn (mouseDir + anytwist) $ theMovement $ setMvAim cr +-- | otherwise = theMovement $ theTurn $ removeTwist $ setMvAim cr + | otherwise = noaimmove $ theTurn $ removeTwist $ setMvAim cr where + setMvAim = maybe id (crMvAim .~) dir twistamount = 1.6 removeTwist cr' = cr' @@ -56,10 +58,14 @@ wasdWithAiming w speed cr addAnyTwist = crTwist .~ anytwist theMovement | movDir == V2 0 0 = id - | otherwise = crMvAbsolute (speed *.* movAbs) . set crMvDir dir - theTurn cr' = creatureTurnTowardDir (_crMvDir cr') 0.2 cr' + | otherwise = crMvAbsolute (speed *.* movAbs) + noaimmove + | movDir == V2 0 0 = id + | otherwise = crMvForward speed + theTurn cr' = creatureTurnTowardDir (_crMvAim cr') 0.2 cr' +-- theTurn' cr' = creatureTurnTowardDir dir 0.2 cr' movDir = wasdDir w - dir = (w ^. cWorld . camPos . camRot) + argV movDir + dir = fmap ((w ^. cWorld . camPos . camRot) +) (safeArgV movDir) movAbs = rotateV (w ^. cWorld . camPos . camRot) $ normalizeV movDir isAiming = _posture (_crStance cr) == Aiming mouseDir = case cr ^? crInv . ix (crSel cr) . itScope . scopePos of diff --git a/src/Dodge/Data/Creature.hs b/src/Dodge/Data/Creature.hs index 9e7301e75..976ca942a 100644 --- a/src/Dodge/Data/Creature.hs +++ b/src/Dodge/Data/Creature.hs @@ -40,6 +40,7 @@ data Creature = Creature , _crDir :: Float , _crOldDir :: Float , _crMvDir :: Float + , _crMvAim :: Float , _crTwist :: Float , _crType :: CreatureType , _crID :: Int diff --git a/src/Dodge/Default/Creature.hs b/src/Dodge/Default/Creature.hs index fe3f6a7f3..bc398fbcc 100644 --- a/src/Dodge/Default/Creature.hs +++ b/src/Dodge/Default/Creature.hs @@ -17,6 +17,7 @@ defaultCreature = , _crDir = 0 , _crOldDir = 0 , _crMvDir = 0 + , _crMvAim = 0 , _crTwist = 0 , _crID = 1 , _crType = defaultCreatureSkin