From c2f7c6e245f6c4b762510ebc58b6a060b6e5c44f Mon Sep 17 00:00:00 2001 From: jgk Date: Sat, 5 Jun 2021 14:48:01 +0200 Subject: [PATCH] Add check for button hold down when releasing rb for lb action --- src/Dodge/Data.hs | 3 +++ src/Dodge/Default.hs | 1 + src/Dodge/Update/UsingInput.hs | 8 +++++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Dodge/Data.hs b/src/Dodge/Data.hs index 5a268fad8..682f48660 100644 --- a/src/Dodge/Data.hs +++ b/src/Dodge/Data.hs @@ -97,6 +97,7 @@ data World = World , _doneSideEffects :: [PreloadData SoundOrigin -> IO (PreloadData SoundOrigin)] , _debugFlags :: DebugFlags , _inventoryMode :: InventoryMode + , _lClickHammer :: HammerPosition } data InventoryMode = TopInventory @@ -321,6 +322,8 @@ data HammerPosition | HammerReleased | HammerUp | NoHammer + deriving + (Eq, Ord, Show) data ItemIdentity = Pistol | SpreadGun diff --git a/src/Dodge/Default.hs b/src/Dodge/Default.hs index fd7d64db2..d54e40fa4 100644 --- a/src/Dodge/Default.hs +++ b/src/Dodge/Default.hs @@ -86,6 +86,7 @@ defaultWorld = World , _doneSideEffects = [] , _debugFlags = defaultDebugFlags , _inventoryMode = TopInventory + , _lClickHammer = HammerUp } defaultCreature :: Creature defaultCreature = Creature diff --git a/src/Dodge/Update/UsingInput.hs b/src/Dodge/Update/UsingInput.hs index 1beb8137f..3b9e40fdc 100644 --- a/src/Dodge/Update/UsingInput.hs +++ b/src/Dodge/Update/UsingInput.hs @@ -20,16 +20,18 @@ updateUsingInput w = updatePressedButtons :: S.Set MouseButton -> World -> World updatePressedButtons pkeys w | lbPressed && rbPressed - = useItem (_yourID w) w - | lbPressed = useLeftItem (_yourID w) w + = useItem (_yourID w) w & lClickHammer .~ HammerDown + | lbPressed && canLeftClick = useLeftItem (_yourID w) w + | lbPressed = w | mbPressed = w & clickMousePos .~ _mousePos w & cameraRot -~ rotation - | otherwise = w + | otherwise = w & lClickHammer .~ HammerUp where lbPressed = ButtonLeft `S.member` pkeys rbPressed = ButtonRight `S.member` pkeys mbPressed = ButtonMiddle `S.member` pkeys rotation = angleBetween (_mousePos w) (_clickMousePos w) + canLeftClick = _lClickHammer w == HammerUp updatePressedButtonsCarte :: S.Set MouseButton -> World -> World updatePressedButtonsCarte pkeys w