From ee50719de81145b5859d957da722cf183e0c8c60 Mon Sep 17 00:00:00 2001 From: "Juan J. Martinez" Date: Thu, 9 Mar 2023 12:20:46 +0000 Subject: Use ALT + Enter to toggle fullscreen --- src/Game/Controller.hs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/Game') diff --git a/src/Game/Controller.hs b/src/Game/Controller.hs index 01dfd1b..d47963e 100644 --- a/src/Game/Controller.hs +++ b/src/Game/Controller.hs @@ -1,4 +1,4 @@ -module Game.Controller (Controls (..), init, update, isPressed) where +module Game.Controller (Controls (..), init, update, isPressed, isModKey, altMod) where import Control.Monad import Data.Int (Int32) @@ -48,6 +48,9 @@ processControllerEvents controls [] = pure controls init :: Controls init = Controls False False False False False False False Nothing Nothing +altMod :: SDL.KeyModifier +altMod = SDL.KeyModifier False False False False True False False False False False False + updateGamepad :: Controls -> [SDL.EventPayload] -> Controls updateGamepad controls events = case controls.joyId of @@ -92,6 +95,12 @@ isPressed code events isEventKey expected keycode (SDL.KeyboardEvent (SDL.KeyboardEventData _ motion False ksym)) = expected == motion && SDL.keysymKeycode ksym == keycode isEventKey _ _ _ = False +isModKey :: SDL.KeyModifier -> [SDL.EventPayload] -> Bool +isModKey kmod = any (isModKeyOne kmod) + where + isModKeyOne m (SDL.KeyboardEvent (SDL.KeyboardEventData _ _ _ ksym)) = SDL.keysymModifier ksym == m + isModKeyOne _ _ = False + isPressedGamepad :: Int32 -> SDL.ControllerButton -> [SDL.EventPayload] -> Maybe Bool isPressedGamepad joyId button events | any (isEventButton SDL.ControllerButtonPressed button) events = Just True -- cgit v1.2.3