summaryrefslogtreecommitdiffstats
path: root/src/Tank.hs
blob: a59561853325d6ccbb3c09daf9b7a6baa6b5202d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
module Tank ( Tank(..)
            , tankX
            , tankY
            ) where

import Vector

data Tank = Tank
          { tankPos           :: !Vertex
          , tankDir           :: !Rotation
          , tankAim           :: !Rotation
          , tankSpeed         :: !Coord
          , tankTurnspeed     :: !Coord
          , tankMoving        :: !Bool
          , tankBulletSpeed   :: !Coord
          , tankBulletBounces :: !Int
          , tankBulletsLeft   :: !Int
          , tankLife          :: !Int
          } deriving (Eq, Show)

tankX :: Tank -> Coord
tankX = vertexX . tankPos

tankY :: Tank -> Coord
tankY = vertexY . tankPos

instance Transformable Tank where
  transform t tank = tank { tankPos = pos , tankDir = dir, tankAim = aim } where
    pos = t >< tankPos tank
    dir = t >< tankDir tank
    aim = t >< tankAim tank