Implement generalised storing of position for mouse presses
This commit is contained in:
@@ -69,22 +69,24 @@ updatePressedButtonsCarte w = updatePressedButtonsCarte' (_mouseButtons (_input
|
||||
updatePressedButtonsCarte' :: M.Map MouseButton Int -> World -> World
|
||||
updatePressedButtonsCarte' pkeys w
|
||||
| isDown ButtonRight =
|
||||
w
|
||||
& input . clickMousePos .~ _mousePos (_input w)
|
||||
& hud . carteCenter %~ (-.- trans)
|
||||
w & hud . carteCenter %~ (-.- trans)
|
||||
| isDown ButtonLeft =
|
||||
w
|
||||
& input . clickMousePos .~ _mousePos (_input w)
|
||||
& hud . carteRot -~ rot
|
||||
& hud . carteZoom *~ czoom
|
||||
| otherwise = w
|
||||
where
|
||||
isDown but = but `M.member` pkeys
|
||||
rot = angleBetween (_mousePos (_input w)) (_clickMousePos (_input w))
|
||||
czoom = magV (_mousePos (_input w)) / magV (_clickMousePos (_input w))
|
||||
trans =
|
||||
rotateV (w ^. hud . carteRot) $
|
||||
1 / (w ^. hud . carteZoom) *.* (_mousePos (_input w) -.- _clickMousePos (_input w))
|
||||
mbutpos but = theinput ^. heldPos . at but
|
||||
rot = fromMaybe 0 $ angleBetween (_mousePos (_input w)) <$> mbutpos SDL.ButtonLeft
|
||||
czoom = fromMaybe 1 $ do
|
||||
p <- mbutpos SDL.ButtonLeft
|
||||
return $ magV (_mousePos theinput) / magV p
|
||||
theinput = w ^. input
|
||||
trans = fromMaybe 0 $ do
|
||||
p <- mbutpos SDL.ButtonRight
|
||||
return . rotateV (w ^. hud . carteRot) $
|
||||
1 / (w ^. hud . carteZoom) *.* (_mousePos (_input w) -.- p)
|
||||
|
||||
updateKeysInTerminal :: Int -> Universe -> Universe
|
||||
updateKeysInTerminal tmid u =
|
||||
|
||||
Reference in New Issue
Block a user