diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-06-26 20:55:51 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-06-26 20:55:51 +0200 |
commit | cc53496bab9ad2bbfc3fb2868cd10fa46f612e69 (patch) | |
tree | f974028160c90e5a373c3ac38d8d7229c419aaa7 /src/Collision.hs | |
parent | 8f1fd98cd69659446b9fdd11c0f3d2b860d779f7 (diff) | |
download | htanks-cc53496bab9ad2bbfc3fb2868cd10fa46f612e69.tar htanks-cc53496bab9ad2bbfc3fb2868cd10fa46f612e69.zip |
Reworked Transform as a type class
Diffstat (limited to 'src/Collision.hs')
-rw-r--r-- | src/Collision.hs | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/Collision.hs b/src/Collision.hs index 6ce2df7..19e6ef5 100644 --- a/src/Collision.hs +++ b/src/Collision.hs @@ -20,7 +20,7 @@ bulletDiameter :: Coord bulletDiameter = 0.05 collisionTankBorder :: Coord -> Coord -> Tank -> Tank -collisionTankBorder lw lh tank = (translate dx dy) >< tank +collisionTankBorder lw lh tank = V.Vector dx dy >< tank where corners = [ V.Vector (tankLength/2) (tankWidth/2) , V.Vector (-tankLength/2) (tankWidth/2) @@ -28,8 +28,8 @@ collisionTankBorder lw lh tank = (translate dx dy) >< tank , V.Vector (tankLength/2) (-tankWidth/2) ] - rotp v = V.rotateV (tankDir tank) >< v - transp v = V.translateV v >< tankPos tank + rotp v = tankDir tank >< v + transp v = v >< tankPos tank points = map (transp . rotp) corners minx = minimum $ map V.vertexX points @@ -50,7 +50,7 @@ collisionBulletTank (b, b') (tank, tank') = (not ((between bx minx maxx) && (bet where between x a b = x >= a && x <= b - rotp t v = V.rotateV' (tankDir t) >< v + rotp t v = tankDir t >:< v transp t v = V.diffV (tankPos t) v V.Vector bx by = (rotp tank) . (transp tank) $ bulletPos b @@ -61,7 +61,8 @@ collisionBulletTank (b, b') (tank, tank') = (not ((between bx minx maxx) && (bet miny = -(tankWidth+bulletDiameter)/2 maxy = (tankWidth+bulletDiameter)/2 -collisionTankTank :: ((Tank, Tank), (Tank, Tank)) -> ((Tank, Tank), (Tank, Tank)) -collisionTankTank ((t1, t1'), (t2, t2')) = ((t1, t1'), (t2, t2')) --- where -
\ No newline at end of file +collisionTankTank :: ((Tank, Tank), (Tank, Tank)) -> (Tank, Tank) +collisionTankTank ((t1, t1'), (t2, t2')) = (t1'', t2'') + where + t1'' = t1' + t2'' = t2' |