aboutsummaryrefslogtreecommitdiff
path: root/src/Game.hs
diff options
context:
space:
mode:
authorJuan J. Martinez <jjm@usebox.net>2023-03-03 21:57:13 +0000
committerJuan J. Martinez <jjm@usebox.net>2023-03-03 21:57:13 +0000
commitb9353d40500dc27812a435d115fe9eaaed8a7cdc (patch)
tree5636739d530b6aba8c760cd2a84595b2af6dc6d8 /src/Game.hs
parentef0a75834870eced4371edd6d50916d4e1bd432f (diff)
downloadspace-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.hs11
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