59 lines
1.2 KiB
Haskell
59 lines
1.2 KiB
Haskell
|
module Types.Player where
|
||
|
|
||
|
import qualified Graphics.Rendering.OpenGL as GL
|
||
|
|
||
|
import Linear
|
||
|
|
||
|
import qualified Data.Vector as V
|
||
|
|
||
|
-- internal imports
|
||
|
|
||
|
import Classes.Graphics.Drawable
|
||
|
import Classes.Graphics.Bindable
|
||
|
import Classes.Prop
|
||
|
|
||
|
import Types.Graphics.VertexBuffer
|
||
|
import Types.Texture
|
||
|
|
||
|
data Pituicat = Pituicat
|
||
|
{ pcPos :: V2 Double
|
||
|
, pcVel :: V2 Double
|
||
|
, pcAcc :: V2 Double
|
||
|
, pcHealth :: Int
|
||
|
, pcTexture :: Texture
|
||
|
}
|
||
|
|
||
|
instance Drawable Pituicat where
|
||
|
|
||
|
toVertices (Pituicat pos@(V2 x y) _ _ _ tex) =
|
||
|
( V.fromList [0, 1, 2, 2, 3, 0]
|
||
|
, V.fromList
|
||
|
[ newVertex
|
||
|
(V3 (realToFrac x - 25) (realToFrac y - 25) 0)
|
||
|
(V4 0 0 0 1)
|
||
|
(V2 0 (1 - 50 / 1024))
|
||
|
1
|
||
|
, newVertex
|
||
|
(V3 (realToFrac x + 25) (realToFrac y - 25) 0)
|
||
|
(V4 0 0 0 1)
|
||
|
(V2 (50 / 1024) (1 - 50 / 1024))
|
||
|
1
|
||
|
, newVertex
|
||
|
(V3 (realToFrac x + 25) (realToFrac y + 25) 0)
|
||
|
(V4 0 0 0 1)
|
||
|
(V2 (50 / 1024) 1)
|
||
|
1
|
||
|
, newVertex
|
||
|
(V3 (realToFrac x - 25) (realToFrac y + 25) 0)
|
||
|
(V4 0 0 0 1)
|
||
|
(V2 (50 / 1024) 1)
|
||
|
1
|
||
|
]
|
||
|
)
|
||
|
|
||
|
instance Prop Pituicat where
|
||
|
|
||
|
residentLayer _ = 0
|
||
|
|
||
|
bindPropTexture = bind . pcTexture
|