import Graphics.Rendering.OpenGL import Graphics.UI.GLUT import Data.IORef import States import Display import Idle import KeyboardMouseC import System.Random import qualified Data.Map as Map main = do (progname,_) <- getArgsAndInitialize initialDisplayMode $= [DoubleBuffered] createWindow "Puzzle24" kState <- newIORef (KState Nothing (KeyS Nothing Nothing 0)) let actions = Map.fromList [(ANeutral , (ActionData AMove Nothing Nothing) ) , (AStand , (ActionData AMove (Just 0) Nothing) ) , (AWalkF , (ActionData AMove (Just 0.0002) Nothing) ) , (AWalkB , (ActionData AMove (Just (-0.0002)) Nothing ) ) , (AJump , (ActionData AMove Nothing (Just 0.0008)) )] mState <- newIORef (MState GameMain ) let gStage' = (GStage (Vector2 (PBound (-1.0) 0.8) (PBound (-0.5) 0.9))) gObj1 = (GObject (Vector2 0.2 0.4) (Vector2 0 (-0.5)) (Vector2 0 0) (Vector2 0 (-0.0000003)) 1 420 OnGround AStand actions) gState' = (GState [gObj1] gStage') mState <- newIORef (MState GameMain gState') let dState' = (DState 400 400 ) windowSize $= (Size (windowWidth dState') (windowHeight dState')) dState <- newIORef dState' keyboardMouseCallback $= Just (keyboardMouse kState mState) idleCallback $= Just (idle mState kState dState ) displayCallback $= (display mState dState ) mainLoop