Improve scroll selection/inventory modification
This commit is contained in:
+31
-6
@@ -155,10 +155,32 @@ updateUniverseLast u =
|
||||
%~ M.union (fmap (const mp) (u ^. uvWorld . input . mouseButtons))
|
||||
& uvWorld . input . heldWorldPos
|
||||
%~ M.union (fmap (const mwp) (u ^. uvWorld . input . mouseButtons))
|
||||
& uvIOEffects %~ doMouseWarping u
|
||||
where
|
||||
mp = u ^. uvWorld . input . mousePos
|
||||
mwp = screenToWorldPos (u ^. uvWorld . wCam) mp
|
||||
|
||||
doMouseWarping :: p -> a -> a
|
||||
doMouseWarping _ = id
|
||||
|
||||
--doMouseWarping :: Universe -> (Universe -> IO Universe) -> (Universe -> IO Universe)
|
||||
--doMouseWarping u f u'
|
||||
-- | Just x <- u ^? uvWorld . input . mouseContext . mcoRotateDist
|
||||
-- = SDL.warpMouse WarpCurrentFocus (P p) >> f (u' & uvWorld . input . mousePos .~ nmp)
|
||||
-- | otherwise = f u'
|
||||
-- where
|
||||
-- cfig = u' ^. uvConfig
|
||||
-- nmp = V2
|
||||
-- (fromIntegral x - 0.5 * windowXFloat cfig)
|
||||
-- (0.5 * windowYFloat cfig - fromIntegral y)
|
||||
-- p@(V2 x y) = (cwin + (msp & each %~ round)) & each %~ fromIntegral
|
||||
-- cwin :: V2 Int
|
||||
-- cwin = ((getWindowSize _gr_world_res (u' ^. uvConfig)))
|
||||
-- mwp = mouseWorldPosW (u' ^. uvWorld)
|
||||
-- msp = u' ^. uvWorld . input . mousePos & _y %~ negate
|
||||
-- cc = u' ^. uvWorld . wCam . camCenter
|
||||
-- d = dist mwp cc
|
||||
|
||||
{- For most menus the only way to change the world is using event handling. -}
|
||||
updateUniverseMid :: Universe -> Universe
|
||||
updateUniverseMid u = case _uvScreenLayers u of
|
||||
@@ -380,14 +402,17 @@ updateMouseContextGame :: Config -> Universe -> MouseContext -> MouseContext
|
||||
updateMouseContextGame cfig u = \case
|
||||
OverInvDrag i _ -> OverInvDrag i (inverseSelNumPos cfig invDP mpos disss)
|
||||
x@OverInvDragSelect{} -> x
|
||||
_ -> fromMaybe aimcontext (isrotatedrag <|> overterm <|> overinv <|> overcomb)
|
||||
MouseGameRotate x
|
||||
| ButtonRight `M.member` (w ^. input . mouseButtons) -> MouseGameRotate x
|
||||
--_ -> fromMaybe aimcontext (isrotatedrag <|> overterm <|> overinv <|> overcomb)
|
||||
_ -> fromMaybe aimcontext (overterm <|> overinv <|> overcomb)
|
||||
where
|
||||
w = u ^. uvWorld
|
||||
isrotatedrag = do
|
||||
t1 <- w ^. input . mouseButtons . at ButtonLeft
|
||||
t2 <- w ^. input . mouseButtons . at ButtonRight
|
||||
guard $ t1 > t2
|
||||
return MouseGameRotate
|
||||
-- isrotatedrag = do
|
||||
-- t1 <- w ^. input . mouseButtons . at ButtonLeft
|
||||
-- t2 <- w ^. input . mouseButtons . at ButtonRight
|
||||
-- guard $ t1 > t2
|
||||
-- return $ MouseGameRotate (dist (mouseWorldPosW w) (w ^. wCam . camCenter))
|
||||
aimcontext
|
||||
| ButtonRight `M.member` (w ^. input . mouseButtons) = MouseAiming
|
||||
| Display_debug `S.member` (cfig ^. debug_booleans) = getDebugMouseOver u
|
||||
|
||||
Reference in New Issue
Block a user