module Main where import Graphics.UI.GLUT import Bindings import Data.IORef import Control.Monad import Data.Maybe import Sprites myInit :: IO () myInit = do clearColor $= Color4 0.5 0.5 0.5 0 shadeModel $= Flat main :: IO () main = do (progName, _args) <- getArgsAndInitialize initialDisplayMode $= [ DoubleBuffered, RGBMode ] initialWindowSize $= Size 500 500 initialWindowPosition $= Position 100 100 createWindow progName myInit reshapeCallback $= Just reshape initial <- newIORef goalState empty <- newIORef [NO] noInst <- newIORef [NO] noRot <- newIORef 0.0 let state = CS { cube = initial, insts = empty, inst = noInst, rot = noRot} keyboardMouseCallback $= Just (keyboardMouse noInst noRot empty) idleCallback $= Just idle displayCallback $= (display state) mainLoop