summaryrefslogtreecommitdiff
path: root/src/Game/Types.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Game/Types.hs')
-rw-r--r--src/Game/Types.hs128
1 files changed, 0 insertions, 128 deletions
diff --git a/src/Game/Types.hs b/src/Game/Types.hs
deleted file mode 100644
index 738205f..0000000
--- a/src/Game/Types.hs
+++ /dev/null
@@ -1,128 +0,0 @@
-{-# LANGUAGE NamedFieldPuns, OverloadedRecordDot #-}
-{- |
- - Module : Game.Types
- - Description :
- - Copyright : Andromeda 2025
- - License : WTFPL
- - Maintainer : Matrix @Andromeda:tchncs.de
- - Stability : Experimental
- -}
-module Game.Types
- ( Object(..)
-
- , toGLMatrix
-
- , Model (objects, camera, cursorDeltaPos, cursorPos, program, keys, wprop)
- , mkModel
-
- , Camera (camPos, camPitch, camYaw, camReference, mouseSensitivity, camVel, strafeStrength, jumpStrength, hasJumped, airTime)
- , mkCamera
-
- , WorldProperties (g, friction, up)
- , mkWorldProperties
-
- ) where
-
-import qualified Graphics.UI.GLFW as GLFW
-import qualified Graphics.Rendering.OpenGL as GL
-
-import qualified Linear as L
-import Linear (Quaternion, V3, V3(..), V4(..))
-
--- | represents a single draw call
-data Object =
- Object
- { vao :: GL.VertexArrayObject
- , numIndicies :: GL.NumArrayIndices
- , numComponents :: GL.NumComponents
- , primitiveMode :: GL.PrimitiveMode
- }
- deriving Show
-
-toGLMatrix :: L.M44 GL.GLfloat -> [GL.GLfloat]
-toGLMatrix
- (V4
- (V4 c00 c01 c02 c03)
- (V4 c10 c11 c12 c13)
- (V4 c20 c21 c22 c23)
- (V4 c30 c31 c32 c33)) =
- [ c00, c01, c02, c03
- , c10, c11, c12, c13
- , c20, c21, c22, c23
- , c30, c31, c32, c33
- ]
-
--- | gamestate
-data Model =
- Model
- { camera :: Camera
- , cursorDeltaPos :: (Double, Double)
- , cursorPos :: (Double, Double)
- , keys :: [GLFW.Key]
- , objects :: [Object]
- , program :: GL.Program
- , wprop :: WorldProperties
- }
- deriving Show
-
-mkModel :: Camera -> [Object] -> GL.Program -> WorldProperties -> Model
-mkModel camera objects program wprop = Model camera (0,0) (0,0) [] objects program wprop
-
--- | camera
-data Camera =
- Camera
- { camPos :: V3 Float
- , camPitch :: Float
- , camYaw :: Float
- , camReference :: V3 Float
- , camVel :: V3 Float
- , mouseSensitivity :: Float
- , strafeStrength :: Float
- , jumpStrength :: Float
- , hasJumped :: Bool
- , airTime :: Float
- }
- deriving Show
-
-mkCamera
- :: V3 Float
- -> Float
- -> Float
- -> V3 Float
- -> V3 Float
- -> Float
- -> Float
- -> Float
- -> Camera
-mkCamera
- camPos
- camPitch
- camYaw
- camReference
- camVel
- mouseSensitivity
- strafeStrength
- jumpStrength =
- Camera
- camPos
- camPitch
- camYaw
- (L.normalize camReference)
- (L.normalize camVel)
- mouseSensitivity
- strafeStrength
- jumpStrength
- False
- 0
-
-data WorldProperties =
- WorldProperties
- { g :: Float -- ^ gravity `g`
- , friction :: Float -- ^ floor friction
- , up :: V3 Float
- }
- deriving Show
-
-mkWorldProperties :: Float -> Float -> V3 Float-> WorldProperties
-mkWorldProperties g friction up =
- WorldProperties g friction (L.normalize up)