diff --git a/src/Game/Display.hs b/src/Game/Display.hs index 99d3be7..03cf3d4 100644 --- a/src/Game/Display.hs +++ b/src/Game/Display.hs @@ -20,5 +20,10 @@ getSquare (toEnum -> x, toEnum -> y) = displayState :: Monad m => MSF (DrawerT m) GameState () displayState = proc state -> do - draw -< mconcat $ color green . getSquare <$> state.snakePos + draw -< pictures $ color green . getSquare <$> state.snakePos draw -< color red $ getSquare state.berryPos + +displayPause :: Monad m => MSF (DrawerT m) () () +displayPause = proc () -> do + draw -< color (withAlpha 0.5 black) $ rectangleSolid 5000 5000 + draw -< color white $ scale 0.5 0.5 $ text "Paused" diff --git a/src/Game/Engine.hs b/src/Game/Engine.hs index ae41042..df27b96 100644 --- a/src/Game/Engine.hs +++ b/src/Game/Engine.hs @@ -83,8 +83,11 @@ mainSF = proc () -> do keys <- getKeys -< () let esc = SpecialKey KeyEsc `elem` keys - paused <- accumulateWith xor True -< esc - state <- pauseMSF undefined (loopMaybe gameSF) -< ((), paused) + unpaused <- accumulateWith xor True -< esc + state <- pauseMSF undefined (loopMaybe gameSF) -< ((), unpaused) -- Display the current state displayState -< state + if unpaused + then returnA -< () + else displayPause -< ()