From dc30f7ca15ad672cc29e982b2e7e736d77b01035 Mon Sep 17 00:00:00 2001 From: justin Date: Fri, 3 Apr 2026 20:50:41 +0100 Subject: [PATCH] Continue tweaking movement, remove _crMvAim --- src/Dodge/Creature/Impulse/Movement.hs | 2 +- src/Dodge/Creature/MoveType.hs | 2 +- src/Dodge/Creature/State/WalkCycle.hs | 2 +- src/Dodge/Creature/YourControl.hs | 11 ++++++----- src/Dodge/Data/Creature.hs | 2 +- src/Dodge/Default/Creature.hs | 2 +- src/Dodge/SpawnAt.hs | 3 ++- src/Dodge/TestString.hs | 5 +++-- src/Dodge/Update.hs | 4 ++-- 9 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/Dodge/Creature/Impulse/Movement.hs b/src/Dodge/Creature/Impulse/Movement.hs index 0d4c7c81b..86ecd8ca2 100644 --- a/src/Dodge/Creature/Impulse/Movement.hs +++ b/src/Dodge/Creature/Impulse/Movement.hs @@ -39,7 +39,7 @@ crMvAbsolute :: LWorld -> Point2 -> Creature -> Creature crMvAbsolute lw p' cr = cr & crPos . _xy +~ p - & crMvDir .~ argV p + & crMvDir .~ argV (p + cr ^. crOldPos . _xy - cr ^. crOldOldPos . _xy) where p = strengthFactor (getCrMoveSpeed lw cr) *.* p' diff --git a/src/Dodge/Creature/MoveType.hs b/src/Dodge/Creature/MoveType.hs index 1c8ad1930..a53a4aade 100644 --- a/src/Dodge/Creature/MoveType.hs +++ b/src/Dodge/Creature/MoveType.hs @@ -8,7 +8,7 @@ crMvType :: Creature -> CrMvType crMvType cr = case _crType cr of Avatar {} -> MvWalking 1.5 ChaseCrit {} -> defaultChaseMvType - HoverCrit {} -> defaultChaseMvType & mvSpeed .~ 0.1 + HoverCrit {} -> defaultChaseMvType & mvSpeed .~ 0.15 SwarmCrit -> defaultChaseMvType AutoCrit -> defaultAimMvType BarrelCrit {} -> defaultAimMvType diff --git a/src/Dodge/Creature/State/WalkCycle.hs b/src/Dodge/Creature/State/WalkCycle.hs index 48ffc8794..9d8c03438 100644 --- a/src/Dodge/Creature/State/WalkCycle.hs +++ b/src/Dodge/Creature/State/WalkCycle.hs @@ -26,7 +26,7 @@ updateCarriage' cid cr w = \case (chooseFootSound ff) Nothing & over (cWorld . lWorld . creatures . ix cid . crType) resetStride - & tocr . crPos +~ 0.1 *^ (cr ^. crOldPos - oop) + & tocr . crPos +~ 0.5 *^ (cr ^. crOldPos - oop) _ -> w & tocr . crPos +~ 0.5 *^ (cr ^. crOldPos - oop) Floating -> w Flying {_zSpeed = dz, _flyInertia = x} -> diff --git a/src/Dodge/Creature/YourControl.hs b/src/Dodge/Creature/YourControl.hs index f9a160446..e8ea15959 100644 --- a/src/Dodge/Creature/YourControl.hs +++ b/src/Dodge/Creature/YourControl.hs @@ -117,7 +117,8 @@ wasdAim inp w cr setposture Aiming (-twoHandTwistAmount) | SDL.ButtonRight `M.member` _mouseButtons inp = aimTurn (w ^. cWorld . lWorld) mousedir cr | Aiming{} <- cr ^. crStance . posture = setposture AtEase twoHandTwistAmount - | otherwise = creatureTurnTowardDir (_crMvAim cr) 0.2 cr +-- | otherwise = creatureTurnTowardDir (_crMvAim cr) 0.2 cr + | otherwise = creatureTurnTowardDir (_crMvDir cr) 0.2 cr where setposture x r = cr @@ -134,11 +135,11 @@ twoHandTwistAmount :: Float twoHandTwistAmount = 1.6 * pi wasdMovement :: LWorld -> Input -> Camera -> Float -> Creature -> Creature -wasdMovement lw inp cam speed = theMovement . setMvAim +wasdMovement lw inp cam speed = theMovement -- . setMvAim where - setMvAim = fromMaybe id $ do - dir <- safeArgV movDir - return $ crMvAim .~ (cam ^. camRot + dir) +-- setMvAim = fromMaybe id $ do +-- dir <- safeArgV movDir +-- return $ crMvAim .~ (cam ^. camRot + dir) movDir = wasdDir inp movAbs = rotateV (cam ^. camRot) $ normalizeV movDir theMovement diff --git a/src/Dodge/Data/Creature.hs b/src/Dodge/Data/Creature.hs index 13ff7c3d4..1b9b71b3e 100644 --- a/src/Dodge/Data/Creature.hs +++ b/src/Dodge/Data/Creature.hs @@ -39,7 +39,7 @@ data Creature = Creature , _crZVel :: Float , _crDir :: Float , _crMvDir :: Float - , _crMvAim :: Float +-- , _crMvAim :: Float , _crType :: CreatureType , _crID :: Int , _crHP :: CrHP diff --git a/src/Dodge/Default/Creature.hs b/src/Dodge/Default/Creature.hs index fbcf65a78..8937b6307 100644 --- a/src/Dodge/Default/Creature.hs +++ b/src/Dodge/Default/Creature.hs @@ -19,7 +19,7 @@ defaultCreature = , _crZVel = 0 , _crDir = 0 , _crMvDir = 0 - , _crMvAim = 0 +-- , _crMvAim = 0 -- , _crTwist = 0 , _crID = 1 , _crType = ChaseCrit 0 LeftForward 0 diff --git a/src/Dodge/SpawnAt.hs b/src/Dodge/SpawnAt.hs index 36fcc2ed3..a44e0b2de 100644 --- a/src/Dodge/SpawnAt.hs +++ b/src/Dodge/SpawnAt.hs @@ -26,4 +26,5 @@ spawnAt p d w = w ---- SoundStart BackgroundSound p foamSprayFadeOutS Nothing : -- [MakeStartCloudAt (V3 x y 20 & _xy +~ p) | x <- [-5, -4 .. 5], y <- [-5, -4 .. 5]] where - f = set (crPos . _xy) p . set crDir d . set crMvDir d . set crMvAim d . set (crPos . _z) 0 . set crZVel 0 + --f = set (crPos . _xy) p . set crDir d . set crMvDir d . set crMvAim d . set (crPos . _z) 0 . set crZVel 0 + f = set (crPos . _xy) p . set crDir d . set crMvDir d . set (crPos . _z) 0 . set crZVel 0 diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 8f38bc218..622d164c6 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -35,13 +35,14 @@ import Data.Monoid import RandomHelp testStringInit :: Universe -> [String] -testStringInit u = [show p, show op, show oop, show (op - oop), show . norm $ op - oop, show d] +testStringInit u = [show p, show op', show oop, show (op' - oop), show . norm $ op' - oop, show d] <> u ^.. tocr . crStance . carriage . to show + <> u ^.. tocr . crMvDir . to show where tocr = uvWorld . cWorld . lWorld . creatures . ix 0 f = fromMaybe 0 p = f $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crPos - op = f $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crOldPos + op' = f $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crOldPos oop = fromMaybe 0 $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crOldOldPos d = fromMaybe 0 $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crDir -- u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crActionPlan . apStrategy . to show diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index fe2cfd765..792356fb2 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -280,8 +280,8 @@ functionalUpdate = . over uvWorld (cWorld . lWorld . lClock +~ 1) . over uvWorld updateDistortions . over uvWorld updateCreatureSoundPositions - . over uvWorld pushYouOutFromWalls . over uvWorld updateCreatureStrides + . over uvWorld pushYouOutFromWalls . colCrsWalls . over uvWorld simpleCrSprings . over uvWorld updateDoors @@ -374,7 +374,7 @@ updateCreatureStrides = cWorld . lWorld . creatures . each %~ updateCreatureStri updateCreatureStride :: Creature -> Creature updateCreatureStride cr = cr & crType . strideAmount +~ d where - s = fromMaybe 0 $ crMvType cr ^? mvSpeed + s = 2 * fromMaybe 1 (crMvType cr ^? mvSpeed) -- d = min s . norm $ cr ^. crPos - cr ^. crOldPos d = max 0 . min s $ dotV (cr ^. crPos . _xy - cr ^. crOldPos . _xy) (unitVectorAtAngle (cr ^. crMvDir))