diff options
Diffstat (limited to 'src/Render.hs')
-rw-r--r-- | src/Render.hs | 76 |
1 files changed, 47 insertions, 29 deletions
diff --git a/src/Render.hs b/src/Render.hs index 91146ba..aa084d8 100644 --- a/src/Render.hs +++ b/src/Render.hs @@ -80,7 +80,7 @@ setup = do shadeModel $= Smooth lighting $= Enabled light (Light 0) $= Enabled - position (Light 0) $= Vertex4 (-1) (-1) 1 (0 :: GLfloat) + position (Light 0) $= Vertex4 (-1) (-1) 1.5 (0 :: GLfloat) colorMaterial $= Just (Front, AmbientAndDiffuse) clientState VertexArray $= Enabled @@ -96,6 +96,8 @@ setup = do getTexture TextureCrosshair getModel ModelTank + getModel ModelBullet + getModel ModelBlock return () @@ -113,6 +115,8 @@ render = do textureCrosshair <- getTexture TextureCrosshair modelTank <- getModel ModelTank + modelBullet <- getModel ModelBullet + modelBlock <- getModel ModelBlock (lw, lh) <- gets (level . gameState) >>= \l -> return (fromIntegral . levelWidth $ l :: GLfloat, fromIntegral . levelHeight $ l :: GLfloat) @@ -127,17 +131,17 @@ render = do normal $ Normal3 0 0 (1 :: GLfloat) unsafeRenderPrimitive Quads $ do - texCoord $ TexCoord2 (0 :: GLfloat) (0 :: GLfloat) - vertex $ Vertex2 0 lh + texCoord $ TexCoord2 (-0.5 :: GLfloat) (-0.5 :: GLfloat) + vertex $ Vertex2 (-1) (lh+1) - texCoord $ TexCoord2 (lw/2) 0 - vertex $ Vertex2 lw lh + texCoord $ TexCoord2 (lw/2+0.5) (-0.5) + vertex $ Vertex2 (lw+1) (lh+1) - texCoord $ TexCoord2 (lw/2) (lh/2) - vertex $ Vertex2 lw 0 + texCoord $ TexCoord2 (lw/2+0.5) (lh/2+0.5) + vertex $ Vertex2 (lw+1) (-1) - texCoord $ TexCoord2 0 (lh/2) - vertex $ Vertex2 (0 :: GLfloat) (0 :: GLfloat) + texCoord $ TexCoord2 (-0.5) (lh/2+0.5) + vertex $ Vertex2 (-1 :: GLfloat) (-1 :: GLfloat) bindInterleavedArrays modelTank @@ -163,30 +167,44 @@ render = do unsafePreservingMatrix $ do rotate 90 $ Vector3 1 0 (0 :: GLfloat) drawObject modelTank 0 + + texture Texture2D $= Disabled + bindInterleavedArrays modelBullet forM_ bulletlist $ \bullet -> unsafePreservingMatrix $ do - let x = realToFrac . bulletX $ bullet - y = realToFrac . bulletY $ bullet - rotDir = realToFrac . bulletDir $ bullet - - translate $ Vector3 x y (0.2 :: GLfloat) - rotate 30 $ Vector3 1 0 (0 :: GLfloat) - rotate rotDir $ Vector3 0 0 (1 :: GLfloat) + let x = realToFrac . bulletX $ bullet + y = realToFrac . bulletY $ bullet + rotDir = realToFrac . bulletDir $ bullet - textureBinding Texture2D $= Just textureBullet + translate $ Vector3 x y (0.25 :: GLfloat) + rotate (rotDir-90) $ Vector3 0 0 (1 :: GLfloat) - unsafeRenderPrimitive Quads $ do - texCoord $ TexCoord2 (0 :: GLfloat) (0 :: GLfloat) - vertex $ Vertex3 (-0.1 :: GLfloat) (-0.1 :: GLfloat) 0 - - texCoord $ TexCoord2 (0 :: GLfloat) (1 :: GLfloat) - vertex $ Vertex3 (-0.1 :: GLfloat) (0.1 :: GLfloat) 0 - - texCoord $ TexCoord2 (1 :: GLfloat) (1 :: GLfloat) - vertex $ Vertex3 (0.1 :: GLfloat) (0.1 :: GLfloat) 0 - - texCoord $ TexCoord2 (1 :: GLfloat) (0 :: GLfloat) - vertex $ Vertex3 (0.1 :: GLfloat) (-0.1 :: GLfloat) 0 + unsafePreservingMatrix $ do + drawObject modelBullet 0 + + bindInterleavedArrays modelBlock + + texture Texture2D $= Enabled + textureBinding Texture2D $= Just textureWood + forM_ [0.5..13.5] $ \x -> unsafePreservingMatrix $ do + translate $ Vector3 x 8.5 (0.5 :: GLfloat) + rotate 90 $ Vector3 1 0 (0 :: GLfloat) + drawObject modelBlock 0 + + forM_ [0.5..13.5] $ \x -> unsafePreservingMatrix $ do + translate $ Vector3 x (-0.5) (0.5 :: GLfloat) + rotate 90 $ Vector3 1 0 (0 :: GLfloat) + drawObject modelBlock 0 + + forM_ [-0.5..8.5] $ \y -> unsafePreservingMatrix $ do + translate $ Vector3 (-0.5) y (0.5 :: GLfloat) + rotate 90 $ Vector3 1 0 (0 :: GLfloat) + drawObject modelBlock 0 + + forM_ [-0.5..8.5] $ \y -> unsafePreservingMatrix $ do + translate $ Vector3 14.5 y (0.5 :: GLfloat) + rotate 90 $ Vector3 1 0 (0 :: GLfloat) + drawObject modelBlock 0 depthFunc $= Just Always |