Work on weapon positioning

This commit is contained in:
2026-04-01 10:04:22 +01:00
parent ecdc19fb5e
commit aea7e6434e
10 changed files with 95 additions and 84 deletions
+6 -2
View File
@@ -65,8 +65,8 @@ rightHandPQ cr
| oneH cr = (V3 11 (-3) 20, Q.qID)
| twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 4 (-10) 0, Q.qz 1)
| twoFlat cr = (V3 4 (-8) 12, Q.qID)
-- | Just dt <- yourRootItemDT w
-- , Just as <- itemAimStance
| Just TwoHandTwist <- cr ^? crManipulation . manObject . imAimStance
= (V3 8 (-6) 10, Q.qID)
| Just p <- crRightHandWall cr = (20 & _xy .~ p, Q.qID)
| otherwise = (handWalkingPos LeftForward (-8) cr, Q.qID)
@@ -116,6 +116,10 @@ leftHandPQ :: Creature -> Point3Q
leftHandPQ cr
| twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 12 4 0, Q.qz 0.4)
| twoFlat cr = (V3 4 8 12, Q.qID)
| Just TwoHandTwist <- cr ^? crManipulation . manObject . imAimStance
= (V3 10 8 20, Q.qID)
| Just TwoHandFlat <- cr ^? crManipulation . manObject . imAimStance
= (V3 10 8 20, Q.qID)
| Just p <- crLeftHandWall cr = (20 & _xy .~ p, Q.qID)
| oneH cr = (V3 0 8 10, Q.qz 0.4)
| otherwise = (handWalkingPos RightForward 8 cr, Q.qID)
+2 -3
View File
@@ -102,7 +102,7 @@ twoFlat :: Creature -> Bool
twoFlat = crInAimStance TwoHandFlat
twists :: Creature -> Bool
twists cr = crInAimStance TwoHandUnder cr || crInAimStance TwoHandOver cr
twists cr = crInAimStance TwoHandTwist cr
-- the use of crOldPos is because the damage position is calculated on the
-- previous frame
@@ -120,8 +120,7 @@ crIsArmouredFrom m p cr = fromMaybe False $ do
-- even though angleVV can generate NaN, the comparison seems to deal with it
frontarmdirection
| crInAimStance OneHand cr = 0.5
| crInAimStance TwoHandUnder cr = negate 1
| crInAimStance TwoHandOver cr = negate 1
| crInAimStance TwoHandTwist cr = negate 1
| otherwise = 0
--crOnSeg :: Point2 -> Point2 -> Creature -> Bool
+1 -4
View File
@@ -116,9 +116,6 @@ wasdWithAiming w cr = wasdAim inp w $ wasdMovement (w ^. cWorld . lWorld) inp ca
wasdAim :: Input -> World -> Creature -> Creature
wasdAim inp w cr
-- | Just 0 <- inp ^? mouseButtons . ix SDL.ButtonRight
-- , Nothing <- inp ^? mouseButtons . ix SDL.ButtonLeft =
-- setAimPosture cr
| SDL.ButtonRight `M.member` _mouseButtons inp
, AtEase <- cr ^. crStance . posture =
setAimPosture cr
@@ -137,7 +134,7 @@ setAimPosture cr =
doAimTwist :: Maybe AimStance -> Float -> Creature -> Creature
doAimTwist as x
| as == Just TwoHandOver || as == Just TwoHandUnder = crDir +~ x
| as == Just TwoHandTwist = crDir +~ x
| otherwise = id
removeAimPosture :: Creature -> Creature