Add check for button hold down when releasing rb for lb action

This commit is contained in:
2021-06-05 14:48:01 +02:00
parent e03197799e
commit c2f7c6e245
3 changed files with 9 additions and 3 deletions
+3
View File
@@ -97,6 +97,7 @@ data World = World
, _doneSideEffects :: [PreloadData SoundOrigin -> IO (PreloadData SoundOrigin)] , _doneSideEffects :: [PreloadData SoundOrigin -> IO (PreloadData SoundOrigin)]
, _debugFlags :: DebugFlags , _debugFlags :: DebugFlags
, _inventoryMode :: InventoryMode , _inventoryMode :: InventoryMode
, _lClickHammer :: HammerPosition
} }
data InventoryMode data InventoryMode
= TopInventory = TopInventory
@@ -321,6 +322,8 @@ data HammerPosition
| HammerReleased | HammerReleased
| HammerUp | HammerUp
| NoHammer | NoHammer
deriving
(Eq, Ord, Show)
data ItemIdentity data ItemIdentity
= Pistol = Pistol
| SpreadGun | SpreadGun
+1
View File
@@ -86,6 +86,7 @@ defaultWorld = World
, _doneSideEffects = [] , _doneSideEffects = []
, _debugFlags = defaultDebugFlags , _debugFlags = defaultDebugFlags
, _inventoryMode = TopInventory , _inventoryMode = TopInventory
, _lClickHammer = HammerUp
} }
defaultCreature :: Creature defaultCreature :: Creature
defaultCreature = Creature defaultCreature = Creature
+5 -3
View File
@@ -20,16 +20,18 @@ updateUsingInput w =
updatePressedButtons :: S.Set MouseButton -> World -> World updatePressedButtons :: S.Set MouseButton -> World -> World
updatePressedButtons pkeys w updatePressedButtons pkeys w
| lbPressed && rbPressed | lbPressed && rbPressed
= useItem (_yourID w) w = useItem (_yourID w) w & lClickHammer .~ HammerDown
| lbPressed = useLeftItem (_yourID w) w | lbPressed && canLeftClick = useLeftItem (_yourID w) w
| lbPressed = w
| mbPressed = w & clickMousePos .~ _mousePos w | mbPressed = w & clickMousePos .~ _mousePos w
& cameraRot -~ rotation & cameraRot -~ rotation
| otherwise = w | otherwise = w & lClickHammer .~ HammerUp
where where
lbPressed = ButtonLeft `S.member` pkeys lbPressed = ButtonLeft `S.member` pkeys
rbPressed = ButtonRight `S.member` pkeys rbPressed = ButtonRight `S.member` pkeys
mbPressed = ButtonMiddle `S.member` pkeys mbPressed = ButtonMiddle `S.member` pkeys
rotation = angleBetween (_mousePos w) (_clickMousePos w) rotation = angleBetween (_mousePos w) (_clickMousePos w)
canLeftClick = _lClickHammer w == HammerUp
updatePressedButtonsCarte :: S.Set MouseButton -> World -> World updatePressedButtonsCarte :: S.Set MouseButton -> World -> World
updatePressedButtonsCarte pkeys w updatePressedButtonsCarte pkeys w