packages feed

cadence-0.1.0.0: examples/hungeon/Main.hs

module Main (main) where

import Apecs
import Types
import Systems
import Linear
import qualified SDL
import Control.Monad (when)
import Input
import Cadence

main :: IO ()
main = do
    w <- initWorld
    (window, renderer) <- initialise w (defaultConfig { windowDimensions = (1280, 720), windowTitle = "Hungeon", backgroundColor = V4 37 19 26 255, targetFPS = Limited 60, showFPS = Just "Roboto-Regular" })
    runWith w (initialize renderer)
    runSystem (do
        settings <- get global :: System' Settings
        when (fullscreen settings) $ do
            liftIO $ SDL.setWindowMode window SDL.FullscreenDesktop
            viewport <- SDL.get (SDL.rendererViewport renderer)
            let (w',h') = case viewport of
                    Just (SDL.Rectangle _ (SDL.V2 w h)) -> (w, h)
                    Nothing -> (1280, 720)
            (SDL.$=) (SDL.rendererScale renderer) (V2 (fromIntegral w' / 1280) (fromIntegral h' / 720))
            modify global $ \(Viewport _) -> Viewport (fromIntegral w', fromIntegral h')
        ) w
    run w renderer window step handlePayload draw