Record whether a mouse click is continued or not

This commit is contained in:
2022-06-22 17:02:57 +01:00
parent ac0948cb64
commit 698ccb414d
18 changed files with 350 additions and 335 deletions
+6 -6
View File
@@ -8,7 +8,8 @@ import Dodge.Creature.Impulse.UseItem
import Geometry
import SDL
import qualified Data.Set as S
--import qualified Data.Set as S
import qualified Data.Map.Strict as M
import Control.Lens
updateUsingInput :: World -> World
@@ -16,7 +17,7 @@ updateUsingInput w = case _hudElement $ _hud w of
DisplayInventory {} -> updatePressedButtons (_mouseButtons w) w
DisplayCarte -> updatePressedButtonsCarte (_mouseButtons w) w
updatePressedButtons :: S.Set MouseButton -> World -> World
updatePressedButtons :: M.Map MouseButton Bool -> World -> World
updatePressedButtons pkeys w
| isDown ButtonLeft && isDown ButtonRight && inTopInv
= useItem (you w) w & doubleMouseHammer .~ HammerDown
@@ -34,11 +35,10 @@ updatePressedButtons pkeys w
inTopInv = case _hudElement (_hud w) of
DisplayInventory NoSubInventory -> True
_ -> False
isDown but = but `S.member` pkeys
isDown but = but `M.member` pkeys
rotation = angleBetween (_mousePos w) (_clickMousePos w)
updatePressedButtonsCarte :: S.Set MouseButton -> World -> World
updatePressedButtonsCarte :: M.Map MouseButton Bool -> World -> World
updatePressedButtonsCarte pkeys w
| isDown ButtonRight = w
& clickMousePos .~ _mousePos w
@@ -49,7 +49,7 @@ updatePressedButtonsCarte pkeys w
& hud . carteZoom *~ czoom
| otherwise = w
where
isDown but = but `S.member` pkeys
isDown but = but `M.member` pkeys
rot = angleBetween (_mousePos w) (_clickMousePos w)
czoom = magV (_mousePos w) / magV (_clickMousePos w)
trans = rotateV (_carteRot (_hud w)) $ 1 / _carteZoom (_hud w) *.* (_mousePos w -.- _clickMousePos w)