Commit before pushing more input events into update
This commit is contained in:
+19
-19
@@ -32,7 +32,7 @@ update where your avatar's view is from. -}
|
||||
updateCamera :: Configuration -> World -> World
|
||||
updateCamera cfig w =
|
||||
w
|
||||
& over (cWorld . lWorld . camPos) (setViewDistance cfig)
|
||||
& over (cWorld . camPos) (setViewDistance cfig)
|
||||
& moveZoomCamera cfig
|
||||
& updateScopeZoom
|
||||
& rotateCamera cfig
|
||||
@@ -40,11 +40,11 @@ updateCamera cfig w =
|
||||
moveZoomCamera :: Configuration -> World -> World
|
||||
moveZoomCamera cfig w =
|
||||
w
|
||||
& cWorld . lWorld . camPos . camCenter .~ newcen
|
||||
& cWorld . lWorld . camPos . camViewFrom .~ newvf
|
||||
& cWorld . lWorld . camPos . camZoom .~ newzoom
|
||||
& cWorld . lWorld . camPos . camDefaultZoom .~ newDefaultZoom
|
||||
& cWorld . lWorld . camPos . camItemZoom .~ newItemZoom
|
||||
& cWorld . camPos . camCenter .~ newcen
|
||||
& cWorld . camPos . camViewFrom .~ newvf
|
||||
& cWorld . camPos . camZoom .~ newzoom
|
||||
& cWorld . camPos . camDefaultZoom .~ newDefaultZoom
|
||||
& cWorld . camPos . camItemZoom .~ newItemZoom
|
||||
where
|
||||
--cfig = _uvConfig uv
|
||||
--w = _uvWorld uv
|
||||
@@ -59,23 +59,23 @@ moveZoomCamera cfig w =
|
||||
guard (SDL.ButtonRight `M.member` _mouseButtons (_input w))
|
||||
yourItem w ^? _Just . itScope . scopePos
|
||||
newcen = cpos +.+ fromMaybe (V2 0 0) mscopeoffset +.+ offset
|
||||
offset = rotateV (w ^. cWorld . lWorld . camPos . camRot) $ ((newzoom - newDefaultZoom) / (newDefaultZoom * newzoom)) *.* _mousePos (_input w)
|
||||
offset = rotateV (w ^. cWorld . camPos . camRot) $ ((newzoom - newDefaultZoom) / (newDefaultZoom * newzoom)) *.* _mousePos (_input w)
|
||||
newzoom = case yourItem w ^? _Just . itScope of
|
||||
Just zs@ZoomScope{} -> _scopeZoom zs
|
||||
_ -> newDefaultZoom * newItemZoom
|
||||
idealDefaultZoom = clipZoom wallZoom
|
||||
newDefaultZoom = case yourItem w ^? _Just . itScope of
|
||||
Just zs@ZoomScope{} -> _scopeZoom zs
|
||||
_ -> changeZoom (w ^. cWorld . lWorld . camPos . camDefaultZoom) idealDefaultZoom
|
||||
_ -> changeZoom (w ^. cWorld . camPos . camDefaultZoom) idealDefaultZoom
|
||||
idealItemZoom = fromMaybe 1 $ do
|
||||
guard $ crIsAiming (you w)
|
||||
zoomFromItem' <$> (yourItem w ^? _Just . itUse . heldAim . aimZoom)
|
||||
newItemZoom = changeZoom (w ^. cWorld . lWorld . camPos . camItemZoom) idealItemZoom
|
||||
newItemZoom = changeZoom (w ^. cWorld . camPos . camItemZoom) idealItemZoom
|
||||
changeZoom curZoom idealZoom
|
||||
| curZoom > idealZoom + 0.01 = ((zoomOutSpeed -1) * curZoom + idealZoom) / zoomOutSpeed
|
||||
| curZoom < idealZoom - 0.01 = ((zoomInSpeed -1) * curZoom + idealZoom) / zoomInSpeed
|
||||
| otherwise = idealZoom
|
||||
wallZoom = min4 (w ^. cWorld . lWorld . camPos . camBoundDist)
|
||||
wallZoom = min4 (w ^. cWorld . camPos . camBoundDist)
|
||||
min4 (a, b, c, d) = minimum [hh / maxd a, hh / maxd (- b), hw / maxd c, hw / maxd (- d)]
|
||||
maxd = max distFromEqmnt
|
||||
distFromEqmnt = foldl' max 1 $ IM.mapMaybe (_eeViewDist . _equipEffect . _itUse) $ getCrEquipment $ you w
|
||||
@@ -129,7 +129,7 @@ zoomInLongGun w
|
||||
ycr = you w
|
||||
Just currentZoom = wp ^? itScope . scopeZoom
|
||||
newzoom = (wp ^?! itScope . scopeZoom) / zoomSpeed
|
||||
mousep = rotateV (w ^. cWorld . lWorld . camPos . camRot) $ _mousePos (_input w)
|
||||
mousep = rotateV (w ^. cWorld . camPos . camRot) $ _mousePos (_input w)
|
||||
|
||||
zoomOutLongGun :: World -> World
|
||||
zoomOutLongGun w
|
||||
@@ -166,22 +166,22 @@ rotateToOverlappingWall w =
|
||||
p = _crPos (you w)
|
||||
|
||||
doWallRotate :: Wall -> World -> World
|
||||
doWallRotate wl' w = rotateUsing $ (argV . uncurry (-.-) $ _wlLine wl') - (w ^. cWorld . lWorld . camPos . camRot)
|
||||
doWallRotate wl' w = rotateUsing $ (argV . uncurry (-.-) $ _wlLine wl') - (w ^. cWorld . camPos . camRot)
|
||||
where
|
||||
rotateUsing a
|
||||
| b - b' > 0.01 = w & cWorld . lWorld . camPos . camRot +~ 0.01
|
||||
| b - b' < negate 0.01 = w & cWorld . lWorld . camPos . camRot -~ 0.01
|
||||
| b - b' > 0.01 = w & cWorld . camPos . camRot +~ 0.01
|
||||
| b - b' < negate 0.01 = w & cWorld . camPos . camRot -~ 0.01
|
||||
| otherwise = w
|
||||
where
|
||||
--b = a * (2 / pi)
|
||||
b = a * (4 / pi)
|
||||
b' = fromIntegral (round b :: Int)
|
||||
|
||||
rotateCameraBy :: Float -> LWorld -> LWorld
|
||||
rotateCameraBy :: Float -> CWorld -> CWorld
|
||||
rotateCameraBy x w =
|
||||
w
|
||||
& camPos . camRot +~ x
|
||||
& creatures . ix 0 . crInv . ix (crSel (w ^?! creatures . ix 0))
|
||||
& lWorld . creatures . ix 0 . crInv . ix (crSel (w ^?! lWorld . creatures . ix 0))
|
||||
. itScope
|
||||
. scopePos
|
||||
%~ rotateV x
|
||||
@@ -189,8 +189,8 @@ rotateCameraBy x w =
|
||||
rotateCamera :: Configuration -> World -> World
|
||||
rotateCamera cfig w
|
||||
| keyl && keyr = w
|
||||
| keyl = over (cWorld . lWorld) (rotateCameraBy 0.025) w
|
||||
| keyr = over (cWorld . lWorld) (rotateCameraBy (-0.025)) w
|
||||
| keyl = over cWorld (rotateCameraBy 0.025) w
|
||||
| keyr = over cWorld (rotateCameraBy (-0.025)) w
|
||||
| otherwise = ifConfigWallRotate cfig w
|
||||
where
|
||||
keyl = SDL.ScancodeQ `Set.member` _keys (_input w) && notAtTerminal w
|
||||
@@ -239,7 +239,7 @@ farWallDistDirection p w =
|
||||
boundPoints $
|
||||
map f $ getViewpoints p (_cWorld w)
|
||||
where
|
||||
f q = (rotateV (negate (w ^. cWorld . lWorld . camPos . camRot)) . (-.- p)) (foldl' findPoint q (wls q))
|
||||
f q = (rotateV (negate (w ^. cWorld . camPos . camRot)) . (-.- p)) (foldl' findPoint q (wls q))
|
||||
wls q = filter wlIsOpaque $ wlsNearSeg p q w
|
||||
findPoint q = fromMaybe q . uncurry (intersectSegSeg p q) . _wlLine
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ updateWheelEvent yi w = case w ^. cWorld . lWorld . hud . hudElement of
|
||||
(_, EquipOptions{}) -> scrollRBOption y w
|
||||
(Nothing, _) -> closeObjScrollDir y w
|
||||
(Just f, _) -> doHeldScroll f y (you w) w
|
||||
| lbDown -> w & cWorld . lWorld . camPos . camZoom +~ y
|
||||
| lbDown -> w & cWorld . camPos . camZoom +~ y
|
||||
| invKeyDown -> changeSwapInvSel yi w
|
||||
| otherwise -> stopSoundFrom (CrReloadSound 0) $ changeAugInvSel yi w
|
||||
DisplayInventory (TweakInventory mi)
|
||||
|
||||
@@ -60,7 +60,7 @@ pressedMBEffectsNoInventory pkeys w
|
||||
w & input . hammers . ix DoubleMouseHam .~ HammerDown
|
||||
| isDown ButtonRight && inTopInv = w
|
||||
| isDown ButtonMiddle =
|
||||
w & cWorld . lWorld . camPos . camRot -~ rotation
|
||||
w & cWorld . camPos . camRot -~ rotation
|
||||
& input . clickMousePos .~ _mousePos (_input w)
|
||||
| isDown ButtonLeft = w & input . hammers . ix DoubleMouseHam .~ HammerDown
|
||||
| otherwise = w
|
||||
|
||||
Reference in New Issue
Block a user