adding handler function

This commit is contained in:
nek0 2017-03-06 17:48:12 +01:00
parent cb91cd77c4
commit af271f85b2
1 changed files with 22 additions and 0 deletions

View File

@ -18,3 +18,25 @@ class MouseClickable a us where
-> SDL.InputMotion -- The 'SDL.InputMotion' of the click
-> Int -- The number of clicks
-> Affection us ()
-- | A helper function that checks wether provided clickables have been clicked.
-- This function does not consume provided events, but passes them on.
handleMouseClicks
:: (Foldable t, MouseClickable clickable us)
=> SDL.Event -- ^ Piped event in
-> t clickable -- ^ 'MouseClickable' elemt to be checked
-> Affection us SDL.Event -- ^ Unaltered event
handleMouseClicks e clickables =
case SDL.eventPayload e of
SDL.MouseButtonEvent dat -> do
mapM_ (\clickable -> do
let SDL.P (SDL.V2 x y) = SDL.mouseButtonEventPos dat
onClick
clickable
(SDL.mouseButtonEventButton dat)
(fromIntegral x, fromIntegral y)
(SDL.mouseButtonEventMotion dat)
(fromIntegral $ SDL.mouseButtonEventClicks dat)
) clickables
return e
_ -> return e