Tweak twisting when aiming

This commit is contained in:
2021-12-05 16:54:08 +00:00
parent d9c5cfc26d
commit 22e3256da3
30 changed files with 350 additions and 252 deletions
+15 -7
View File
@@ -7,14 +7,17 @@ import ShapePicture
import qualified Data.IntMap.Strict as IM
import Control.Lens
import Data.Maybe
pictureWeaponOnAim
:: Creature
-> Int -- ^ Position of item in inventory
-> SPic
pictureWeaponOnAim cr i = pictureWeaponOnAimItem pic cr i
pictureWeaponOnAim cr i = pictureWeaponOnAimItem (itSPic it) cr i
where
it = _crInv cr IM.! i
pic = _itFloorPict it it
itSPic :: Item -> SPic
itSPic it = _dimSPic (_itDimension it) it
pictureWeaponOnAim'
:: (Item -> SPic)
@@ -40,7 +43,7 @@ pictureWeaponOnAimItem
-> Creature
-> Int -- ^ Position of item in inventory
-> SPic
pictureWeaponOnAimItem p cr posInInv
pictureWeaponOnAimItem p' cr posInInv
| isSelected && _posture (_crStance cr) == Aiming && isTwisting
= shoulderD twistWep
| isSelected && _posture (_crStance cr) == Aiming && isOneHand
@@ -59,15 +62,20 @@ pictureWeaponOnAimItem p cr posInInv
handD = translateSPz 15
isSelected = _crInvSel cr == posInInv
drawnWep = translateSPf (1.2 * _crRad cr) 0 p
twistWep = translateSPf (0.5 * _crRad cr) 0 p
oneHandWep = translateSPf (1.5 * _crRad cr) 0 p
holsteredWep = translateSPf (_crRad cr) 0 (rotateSP (strideRot cr + 1.2) p)
twistWep = translateSPf (-5) 0 p
oneHandWep = translateSPf 14 0 p
holsteredWep = translateSPf (_crRad cr) 0
(rotateSP (strideRot cr + 1.2) (translateSPf (-5) 0 twistWep))
holsteredTwoFlat = translateSPf (_crRad cr) 0 (rotateSP (twoFlatHRot cr) p)
holsteredOneHandWep = translateSPf (_crRad cr * 0.7 + handPos) (_crRad cr * negate 0.7) p
holsteredOneHandWep = translateSPf (_crRad cr * 0.7 + handPos) (_crRad cr * negate 0.7)
(translateSPf (-2) 0 p)
handPos = case cr^? crStance . carriage of
Just (Walking x LeftForward) -> f x * 50
_ -> 0
theIt = _crInv cr IM.! posInInv
p = fromMaybe p' $ do
x <- theIt ^? itDimension . dimPortage . handlePos
return $translateSPf (-x) 0 p'
isTwisting = theIt ^? itUseAimStance == Just TwoHandTwist
isOneHand = theIt ^? itUseAimStance == Just OneHand
isTwoHandFlat = theIt ^? itUseAimStance == Just TwoHandFlat