83 lines
2.8 KiB
Haskell
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)
|
|
(picToLTree (Just 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
|