Further tweak jetpack

This commit is contained in:
2021-04-24 20:06:19 +02:00
parent e23e076184
commit 71795d2d9d
2 changed files with 19 additions and 14 deletions
+1 -1
View File
@@ -256,7 +256,7 @@ startCr = defaultCreature
startInventory = IM.fromList (zip [0..20] startInventory = IM.fromList (zip [0..20]
( (
[ --jetPack [ jetPack
--[pistol --[pistol
--,blinkGun --,blinkGun
--,spawnGun lamp --,spawnGun lamp
+9 -4
View File
@@ -28,11 +28,15 @@ yourControl w (f,g) cr = ( (updateUsingInput . f, g)
speed = _varMovementSpeedModifier w * equipFactor speed = _varMovementSpeedModifier w * equipFactor
equipFactor = product $ map equipSpeed $ IM.elems $ _crInv $ _creatures w IM.! 0 equipFactor = product $ map equipSpeed $ IM.elems $ _crInv $ _creatures w IM.! 0
{-
Turns key presses into creature movement.
-}
wasdWithAiming :: World -> Float -> Float -> Int -> Creature -> Creature wasdWithAiming :: World -> Float -> Float -> Int -> Creature -> Creature
wasdWithAiming w speed aimSpeed i cr wasdWithAiming w speed aimSpeed i cr
| (any (\it -> it ^? itIdentity == Just JetPack) $ _crInv cr) && isMoving && isAiming | (any (\it -> it ^? itIdentity == Just JetPack) $ _crInv cr) && isMoving && isAiming
&& diffAngles mouseDir (argV mov) < pi/3 && diffAngles mouseDir (argV mov) < pi/2
= over crPos (+.+ (0.2 *.* mov)) -- = over crPos (+.+ (speed *.* mov))
= over crPos (+.+ (speed *.* unitVectorAtAngle mouseDir))
. set crDir mouseDir . set crDir mouseDir
$ set (crState . stance . carriage) (Boosting mov) $ set (crState . stance . carriage) (Boosting mov)
cr cr
@@ -41,7 +45,7 @@ wasdWithAiming w speed aimSpeed i cr
$ set (crState . stance . carriage) Floating $ set (crState . stance . carriage) Floating
cr cr
| (any (\it -> it ^? itIdentity == Just JetPack) $ _crInv cr) && isMoving | (any (\it -> it ^? itIdentity == Just JetPack) $ _crInv cr) && isMoving
= over crPos (+.+ (0.2 *.* mov)) = over crPos (+.+ (speed *.* mov))
. over crDir (flip fromMaybe dir) . over crDir (flip fromMaybe dir)
$ set (crState . stance . carriage) (Boosting mov) $ set (crState . stance . carriage) (Boosting mov)
cr cr
@@ -65,7 +69,8 @@ wasdWithAiming w speed aimSpeed i cr
| otherwise | otherwise
= over ( crDir) (flip fromMaybe dir) = over ( crDir) (flip fromMaybe dir)
cr cr
where (mov',dir') = wasdComp (view keys w) w where
(mov',dir') = wasdComp (view keys w) w
(mov,dir) = (rotateV (_cameraRot w) mov',fmap (_cameraRot w +) dir') (mov,dir) = (rotateV (_cameraRot w) mov',fmap (_cameraRot w +) dir')
isMoving = mov' /= (0,0) isMoving = mov' /= (0,0)
isAiming = (_posture $ _stance $ _crState cr) == Aiming isAiming = (_posture $ _stance $ _crState cr) == Aiming