Files
loop/app/Main.hs
T
2021-02-27 02:09:04 +01:00

83 lines
2.8 KiB
Haskell

module Main where
import Loop
import Shaders
import Shapes
import Dodge.Prototypes
import Dodge.Data
import Dodge.Initialisation
import Dodge.Rooms
import Dodge.Layout
import Dodge.LoadSound
import Dodge.Update
import Dodge.KeyEvents
import Dodge.Rendering
import Dodge.Menu
import Picture
import Picture.Render
import Picture.Preload
import Sound
import Preload
import Control.Concurrent
import Control.Lens
import System.Random
import qualified SDL as SDL
import qualified SDL.Mixer as Mix
import Graphics.Rendering.OpenGL hiding (color,scale,translate,rotate)
--Mix.openAudio Mix.defaultAudio 256 >>
initWorld = initialWorld
{ _randGen = mkStdGen 2
, _windowX = 800
, _windowY = 600
}
pps = [(0,0),(50,0),(0,25)]
ppt = [(0,0),(-0.50,0),(0.20,0.25)]
main :: IO ()
main = do
-- loadedSounds <- loadSounds
setupLoop
"windowName"
800 600
doPreload
cleanUpPreload
(initializeWorld $ generateFromTree lev1 $ initWorld)
(-- \((bs:fs:ts:_),tes) w -> --do render setparams w egFade
\preData w -> --do render setparams w egFade
do
startTicks <- SDL.ticks
(lightTicks,timeSpentPoking) <- renderPicture' (_renderData preData)
(_cameraRot w) (_cameraZoom w)
(_cameraPos w)
(_windowX w,_windowY w)
(wallsForGloom' w)
(lightsForGloom' w)
(worldPictures w)
blendFunc $= (SrcAlpha,OneMinusSrcAlpha)
renderTree (_renderData preData) (_cameraRot w) (_cameraZoom w) (_cameraPos w)
(_windowX w,_windowY w)
(picToList 1 $ fixedCoordPictures w)
endRenderTicks <- SDL.ticks
playSoundQueue (_soundData preData) (_soundQueue w)
newSoundData <- playAndUpdate (_sounds w) (_soundData preData)
endMixerTicks <- SDL.ticks
return $ (preData {_soundData = newSoundData})
& renderTime +~ (endRenderTicks - startTicks)
& mixerTime +~ (endMixerTicks - endRenderTicks)
& renderLighting +~ (lightTicks - startTicks)
& renderPicture +~ (endRenderTicks - lightTicks)
& pokeTime +~ timeSpentPoking
)
(flip $ menuEvents $ flip handleEvent)
(\w -> Just $ update w)
Mix.closeAudio