From 47ecfb7fd335b098afac7fbf80cfc30677dc2481 Mon Sep 17 00:00:00 2001 From: justin Date: Fri, 3 Apr 2026 19:52:56 +0100 Subject: [PATCH] Test making walking movement slightly more floaty --- src/Dodge/Creature.hs | 2 +- src/Dodge/Creature/MoveType.hs | 2 +- src/Dodge/Creature/State/WalkCycle.hs | 7 +++++-- src/Dodge/Creature/Update.hs | 2 +- src/Dodge/Creature/Vocalization.hs | 11 ---------- src/Dodge/Creature/YourControl.hs | 12 ++++------- src/Dodge/Data/Creature/Misc.hs | 1 - src/Dodge/Debug/Terminal.hs | 2 +- src/Dodge/TestString.hs | 30 ++++++++++++++------------- tags | 11 +++++----- 10 files changed, 35 insertions(+), 45 deletions(-) diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index dcefddc59..8eb9796d0 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -99,7 +99,7 @@ startCr = & crInv .~ mempty & crFaction .~ PlayerFaction -- & crMvType .~ MvWalking yourDefaultSpeed - & crType .~ Avatar (PulseStatus 55 0) Flesh 50 50 50 3 AvPosture LeftForward 0 + & crType .~ Avatar (PulseStatus 55 0) Flesh 50 50 50 AvPosture LeftForward 0 -- | Items you start with. startInvList :: [Item] diff --git a/src/Dodge/Creature/MoveType.hs b/src/Dodge/Creature/MoveType.hs index c7e736565..1c8ad1930 100644 --- a/src/Dodge/Creature/MoveType.hs +++ b/src/Dodge/Creature/MoveType.hs @@ -6,7 +6,7 @@ import Control.Lens crMvType :: Creature -> CrMvType crMvType cr = case _crType cr of - Avatar {_avMoveSpeed = s} -> MvWalking s + Avatar {} -> MvWalking 1.5 ChaseCrit {} -> defaultChaseMvType HoverCrit {} -> defaultChaseMvType & mvSpeed .~ 0.1 SwarmCrit -> defaultChaseMvType diff --git a/src/Dodge/Creature/State/WalkCycle.hs b/src/Dodge/Creature/State/WalkCycle.hs index 5f1dcd644..48ffc8794 100644 --- a/src/Dodge/Creature/State/WalkCycle.hs +++ b/src/Dodge/Creature/State/WalkCycle.hs @@ -26,7 +26,8 @@ updateCarriage' cid cr w = \case (chooseFootSound ff) Nothing & over (cWorld . lWorld . creatures . ix cid . crType) resetStride - _ -> w + & tocr . crPos +~ 0.1 *^ (cr ^. crOldPos - oop) + _ -> w & tocr . crPos +~ 0.5 *^ (cr ^. crOldPos - oop) Floating -> w Flying {_zSpeed = dz, _flyInertia = x} -> w & cWorld . lWorld . creatures . ix cid . crPos . _xy +~ x *^ f (cr ^. crOldPos . _xy - oop ^. _xy) @@ -38,11 +39,13 @@ updateCarriage' cid cr w = \case let v = 0.9 *^ (cr ^. crOldPos - oop & _z -~ 0.5) ep = cr ^. crPos + v in if ep ^. _z < 0 && not (any (pointInPoly (ep ^. _xy)) (w ^. cWorld . chasms)) - then w & cWorld . lWorld . creatures . ix cid . crPos .~ (ep & _z .~ 0) + then w & tocr . crPos .~ (ep & _z .~ 0) & cWorld . lWorld . creatures . ix cid . crStance . carriage .~ OnGround else w & cWorld . lWorld . creatures . ix cid . crPos .~ ep OnGround {} -> w + & tocr . crPos +~ 0.8 *^ (cr ^. crOldPos - oop) where + tocr = cWorld . lWorld . creatures . ix cid oop = cr ^. crOldOldPos f v | norm v > 10 = 10 *^ signorm v | otherwise = v diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index 35d63fea1..c6ff9d209 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -53,7 +53,7 @@ updateLivingCreature cr = Avatar{} -> (cWorld . lWorld . creatures . ix 0 . crType . avatarPulse %~ updatePulse) . crUpdate cid - . yourControl cr + . yourControl LampCrit{} -> updateLampoid cr BarrelCrit bt -> updateBarreloid bt cr ChaseCrit{} -> \w -> diff --git a/src/Dodge/Creature/Vocalization.hs b/src/Dodge/Creature/Vocalization.hs index 4ceb5f0a8..081ae9bff 100644 --- a/src/Dodge/Creature/Vocalization.hs +++ b/src/Dodge/Creature/Vocalization.hs @@ -3,7 +3,6 @@ module Dodge.Creature.Vocalization ( crWarningSounds, crDeathSounds, - crVocalizationSound, resetCrVocCoolDown, ) where @@ -14,16 +13,6 @@ import Dodge.SoundLogic.ExternallyGeneratedSounds import Sound.Data import System.Random -crVocalizationSound :: Creature -> Maybe SoundID -crVocalizationSound cr = case cr ^. crType of - Avatar{} -> Nothing - ChaseCrit{} -> Just seagullChatterS - HoverCrit{} -> Just beep3QuickS - SwarmCrit -> Nothing - AutoCrit -> Nothing - BarrelCrit{} -> Nothing - LampCrit{} -> Nothing - crWarningSounds :: Creature -> [SoundID] crWarningSounds cr = case cr ^. crType of Avatar{} -> mempty diff --git a/src/Dodge/Creature/YourControl.hs b/src/Dodge/Creature/YourControl.hs index 0fa887b0f..f9a160446 100644 --- a/src/Dodge/Creature/YourControl.hs +++ b/src/Dodge/Creature/YourControl.hs @@ -23,16 +23,12 @@ import NewInt import qualified SDL -- | The AI equivalent for your control. -yourControl :: Creature -> World -> World -yourControl _ w +yourControl :: World -> World +yourControl w | inTextInputFocus w = w | NoSubInventory <- w ^. hud . subInventory = w - & cWorld - . lWorld - . creatures - . ix 0 - %~ wasdWithAiming w + & cWorld . lWorld . creatures . ix 0 %~ wasdWithAiming w & tryClickUse (w ^. input . mouseButtons) & handleHotkeys | otherwise = w & cWorld . lWorld . creatures . ix 0 %~ wasdWithAiming w @@ -147,7 +143,7 @@ wasdMovement lw inp cam speed = theMovement . setMvAim movAbs = rotateV (cam ^. camRot) $ normalizeV movDir theMovement | movDir == V2 0 0 = id - | otherwise = crMvAbsolute lw (speed *.* movAbs) + | otherwise = crMvAbsolute lw (speed *^ movAbs) aimTurn :: LWorld -> Float -> Creature -> Creature aimTurn lw a cr = creatureTurnTowardDir a (x * 0.2) cr diff --git a/src/Dodge/Data/Creature/Misc.hs b/src/Dodge/Data/Creature/Misc.hs index c82e60bf8..e5464f519 100644 --- a/src/Dodge/Data/Creature/Misc.hs +++ b/src/Dodge/Data/Creature/Misc.hs @@ -49,7 +49,6 @@ data CreatureType , _avStrength :: Int , _avDexterity :: Int , _avIntelligence :: Int - , _avMoveSpeed :: Float , _avPosture :: AvatarPosture , _footForward :: FootForward , _strideAmount :: Float diff --git a/src/Dodge/Debug/Terminal.hs b/src/Dodge/Debug/Terminal.hs index 6dc71a833..80ed4fe81 100644 --- a/src/Dodge/Debug/Terminal.hs +++ b/src/Dodge/Debug/Terminal.hs @@ -89,7 +89,7 @@ applySetTerminalString var = case key' of -- "invcap" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crInvCapacity .~ round (fromJust val') -- "mass" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crMass .~ fromJust val' -- "mvspeed" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crMvType . mvSpeed .~ fromJust val' - "mvspeed" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crType . avMoveSpeed .~ fromJust val' +-- "mvspeed" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crType . avMoveSpeed .~ fromJust val' _ -> showTerminalError ("set " ++ var) where (key, val) = getSplitString var diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 17a2e3da3..8f38bc218 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -35,20 +35,22 @@ import Data.Monoid import RandomHelp testStringInit :: Universe -> [String] -testStringInit u = u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crActionPlan . apStrategy . to show - <> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crActionPlan . apAction . to show - <> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crPerception . cpAttention . to show - <> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crPerception . cpAwareness . to show - <> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crIntention . targetCr . to show - <> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crIntention . mvToPoint . to show - <> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crIntention . viewPoint . to show --- u = [show p, show op, show oop, show (op - oop), show . norm $ op - oop, show d] --- where --- f = fromMaybe 0 --- p = f $ u ^? uvWorld . cWorld . lWorld . creatures . ix 2 . crPos . _xy --- op = f $ u ^? uvWorld . cWorld . lWorld . creatures . ix 2 . crOldPos . _xy --- oop = fromMaybe 0 $ u ^? uvWorld . cWorld . lWorld . creatures . ix 2 . crStance . carriage . oldOldPos --- d = fromMaybe 0 $ u ^? uvWorld . cWorld . lWorld . creatures . ix 2 . crDir +testStringInit u = [show p, show op, show oop, show (op - oop), show . norm $ op - oop, show d] + <> u ^.. tocr . crStance . carriage . 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 + 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 +-- <> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crActionPlan . apAction . to show +-- <> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crPerception . cpAttention . to show +-- <> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crPerception . cpAwareness . to show +-- <> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crIntention . targetCr . to show +-- <> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crIntention . mvToPoint . to show +-- <> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crIntention . viewPoint . to show -- fmap show (u ^.. uvWorld . cWorld . lWorld . creatures . ix 0 . crWallTouch . each) -- (fmap show $ u ^.. uvWorld . cWorld . lWorld . creatures . each . crStance . carriage) -- (fmap show $ u ^.. uvWorld . cWorld . lWorld . creatures . each . crStance . carriage . strideAmount) diff --git a/tags b/tags index c6d0f98b3..976157b8b 100644 --- a/tags +++ b/tags @@ -2540,10 +2540,10 @@ addDoorAtNthLinkToggleInterrupt src/Dodge/Room/Warning.hs 47;" f addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 66;" f addDoorToggleTerminal src/Dodge/Room/Warning.hs 41;" f addDoorToggleTerminal' src/Dodge/Room/Warning.hs 87;" f -addGib4 src/Dodge/Prop/Gib.hs 54;" f -addGibAt src/Dodge/Prop/Gib.hs 65;" f -addGibAtDir src/Dodge/Prop/Gib.hs 71;" f -addGibsAtDir src/Dodge/Prop/Gib.hs 42;" f +addGib4 src/Dodge/Prop/Gib.hs 56;" f +addGibAt src/Dodge/Prop/Gib.hs 67;" f +addGibAtDir src/Dodge/Prop/Gib.hs 73;" f +addGibsAtDir src/Dodge/Prop/Gib.hs 43;" f addGirder src/Dodge/Room/Modify/Girder.hs 90;" f addGirder' src/Dodge/Room/Modify/Girder.hs 111;" f addGirderEW src/Dodge/Room/Modify/Girder.hs 72;" f @@ -4118,7 +4118,7 @@ makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f makeColorTermLine src/Dodge/Terminal.hs 124;" f makeColorTermPara src/Dodge/Terminal.hs 121;" f makeCorpse src/Dodge/Corpse/Make.hs 13;" f -makeCrGibs src/Dodge/Prop/Gib.hs 18;" f +makeCrGibs src/Dodge/Prop/Gib.hs 19;" f makeDebris src/Dodge/Block/Debris.hs 75;" f makeDebrisDirected src/Dodge/Block/Debris.hs 101;" f makeDebrisDirectedZ src/Dodge/Block/Debris.hs 81;" f @@ -4168,6 +4168,7 @@ marimbaC5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 591;" f marimbaE5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 629;" f marimbaG5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 617;" f materialColor src/Dodge/Material/Color.hs 8;" f +materialGib src/Dodge/Prop/Gib.hs 95;" f materialPenetrable src/Dodge/Bullet.hs 212;" f maxAmmo src/Dodge/Item/MaxAmmo.hs 6;" f maxDamageType src/Dodge/Damage.hs 59;" f