summaryrefslogtreecommitdiffstats
path: root/src/Game.hs
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2011-06-24 21:50:32 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2011-06-24 21:50:32 +0200
commit83f0606ea9dfd6b493097dc97330055dff4a2867 (patch)
tree464d7f3ed2c02f48b6463d1528e3e0b5f50e79c6 /src/Game.hs
parentd7971385e844e24d9d851d3d142895b5cb89c91b (diff)
downloadhtanks-83f0606ea9dfd6b493097dc97330055dff4a2867.tar
htanks-83f0606ea9dfd6b493097dc97330055dff4a2867.zip
Added Transformable class to simplify collision calculation
Diffstat (limited to 'src/Game.hs')
-rw-r--r--src/Game.hs26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/Game.hs b/src/Game.hs
index 5af2ad2..16b04d8 100644
--- a/src/Game.hs
+++ b/src/Game.hs
@@ -1,26 +1,36 @@
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Game ( Bullet(..)
+ , bulletX
+ , bulletY
, GameState(..)
) where
import Level
import Tank
-
-import Control.Monad
-import Control.Monad.State
-import Data.Fixed
+import Transformable
+import Vector
data Bullet = Bullet
- { bulletX :: !Micro
- , bulletY :: !Micro
- , bulletDir :: !Micro
- , bulletSpeed :: !Micro
+ { bulletPos :: !Vertex
+ , bulletDir :: !Vector
+ , bulletSpeed :: !Coord
, bulletBouncesLeft :: !Int
, bulletTank :: !Int
} deriving (Eq, Show)
+bulletX :: Bullet -> Coord
+bulletX = vertexX . bulletPos
+
+bulletY :: Bullet -> Coord
+bulletY = vertexY . bulletPos
+
+instance Transformable Bullet where
+ t >< b = b { bulletPos = pos, bulletDir = dir } where
+ pos = t >< bulletPos b
+ dir = t >< bulletDir b
+
data GameState = GameState
{ level :: !Level
, tanks :: ![Tank]