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 Classes.Actor 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 1 1 1 1) (V2 0 (1 - 50 / 1024)) 1 , newVertex (V3 (realToFrac x + 25) (realToFrac y - 25) 0) (V4 1 1 1 1) (V2 (50 / 1024) (1 - 50 / 1024)) 1 , newVertex (V3 (realToFrac x + 25) (realToFrac y + 25) 0) (V4 1 1 1 1) (V2 (50 / 1024) 1) 1 , newVertex (V3 (realToFrac x - 25) (realToFrac y + 25) 0) (V4 1 1 1 1) (V2 0 1) 1 ] ) instance Prop Pituicat where residentLayer _ = 0 bindPropTexture = bind . pcTexture instance Actor Pituicat where perform _ p = p