diff options
author | Juan J. Martinez <jjm@usebox.net> | 2023-03-03 21:57:13 +0000 |
---|---|---|
committer | Juan J. Martinez <jjm@usebox.net> | 2023-03-03 21:57:13 +0000 |
commit | b9353d40500dc27812a435d115fe9eaaed8a7cdc (patch) | |
tree | 5636739d530b6aba8c760cd2a84595b2af6dc6d8 /src/Game.hs | |
parent | ef0a75834870eced4371edd6d50916d4e1bd432f (diff) | |
download | space-plat-hs-b9353d40500dc27812a435d115fe9eaaed8a7cdc.tar.gz space-plat-hs-b9353d40500dc27812a435d115fe9eaaed8a7cdc.zip |
Better Gamepad support handling connection/disconnection
Diffstat (limited to 'src/Game.hs')
-rw-r--r-- | src/Game.hs | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/Game.hs b/src/Game.hs index 1d93065..e93269e 100644 --- a/src/Game.hs +++ b/src/Game.hs @@ -13,8 +13,7 @@ import qualified Game.Hud as H import qualified Game.Map as M import qualified Game.Sprites as S import qualified Game.State as GS -import qualified Game.Utils as U -import SDL (($=), ($~)) +import SDL (($=)) import qualified SDL import qualified SDL.Image import SDL.Vect (V2 (..)) @@ -89,7 +88,7 @@ main = do map' <- M.load "data/map.json" tsTexture sprites <- S.load "data/sprites.json" ssTexture font <- BF.load "data/font.json" bfTexture - controls <- newIORef =<< C.init + controls <- newIORef C.init entities <- E.mkEntities sprites map' controls hud <- H.mkHud sprites gameLoop @@ -136,7 +135,7 @@ gameLoop e = do events <- map SDL.eventPayload <$> SDL.pollEvents -- F11 for fullscreen / windowed - env <- if fromMaybe False $ U.isPressed SDL.KeycodeF11 events then toggleFullscreen e else pure e + env <- if fromMaybe False $ C.isPressed SDL.KeycodeF11 events then toggleFullscreen e else pure e let renderer = env.renderer canvas = env.canvas @@ -145,10 +144,10 @@ gameLoop e = do state = env.state -- ESC or close the window to quit - let quit = fromMaybe False (U.isPressed SDL.KeycodeEscape events) || SDL.QuitEvent `elem` events + let quit = fromMaybe False (C.isPressed SDL.KeycodeEscape events) || SDL.QuitEvent `elem` events unless quit $ do -- update controls - controls $~ flip C.update events + writeIORef controls =<< (`C.update` events) =<< readIORef controls SDL.rendererRenderTarget renderer $= Just canvas SDL.clear renderer |