Partially working attachable scope

This commit is contained in:
2023-12-24 13:16:43 +00:00
parent 210787d2dc
commit 494db47945
+12 -4
View File
@@ -5,6 +5,7 @@ module Dodge.Update.Camera (
updateCamera,
) where
import Dodge.HeldScroll
import Bound
import Control.Applicative
import Control.Monad
@@ -76,7 +77,7 @@ updateInGameCamera cfig w =
& updateBounds cfig
& over wCam (setViewDistance cfig)
& wCam %~ moveZoomCamera cfig (w ^. input) (you w)
-- & updateScopeZoom
& updateScopeZoom
& rotateCamera cfig
moveZoomCamera :: Configuration -> Input -> Creature -> Camera -> Camera
@@ -102,6 +103,7 @@ moveZoomCamera cfig theinput cr campos =
(cr ^? crInv . ix (i - 1) . itUse . attachParams . scrollAttachParams . opticPos)
<|> (mitm ^? _Just . itScope . remotePos)
newcen = cpos +.+ fromMaybe (V2 0 0) mscopeoffset +.+ offset
-- newcen = cpos +.+ fromMaybe offset mscopeoffset -- +.+ offset
offset =
rotateV (campos ^. camRot) $
((newzoom - newDefaultZoom) / (newDefaultZoom * newzoom)) *.* _mousePos theinput
@@ -112,9 +114,12 @@ moveZoomCamera cfig theinput cr campos =
---- Just zs@ZoomScope{} -> _scopeZoom zs
-- _ -> newDefaultZoom * newItemZoom
idealDefaultZoom = clipZoom wallZoom
newDefaultZoom = case mitm ^? _Just . itScope of
-- Just zs@ZoomScope{} -> _scopeZoom zs
_ -> changeZoom (campos ^. camDefaultZoom) idealDefaultZoom
-- newDefaultZoom = case mitm ^? _Just . itScope of
---- Just zs@ZoomScope{} -> _scopeZoom zs
-- _ -> changeZoom (campos ^. camDefaultZoom) idealDefaultZoom
newDefaultZoom = fromMaybe (changeZoom (campos ^. camDefaultZoom) idealDefaultZoom) $ do
i <- cr ^? crManipulation . manObject . inInventory . ispItem
(cr ^? crInv . ix (i - 1) . itUse . attachParams . scrollAttachParams . opticZoom)
idealItemZoom = fromMaybe 1 $ do
guard $ crIsAiming cr
zoomFromItem <$> (mitm ^? _Just . itUse . heldAim . aimZoom)
@@ -136,6 +141,9 @@ moveZoomCamera cfig theinput cr campos =
updateScopeZoom :: World -> World
updateScopeZoom w = fromMaybe w $ do
i <- w ^? cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . inInventory . ispItem
itm <- _crInv (you w) IM.!? i
atparams <- you w ^? crInv . ix (i - 1) . itUse . attachParams . scrollAttachParams
guard (canHeldScrollAttach itm atparams)
return $ updateScopeZoom' i w
updateScopeZoom' :: Int -> World -> World