diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-06-24 21:50:32 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-06-24 21:50:32 +0200 |
commit | 83f0606ea9dfd6b493097dc97330055dff4a2867 (patch) | |
tree | 464d7f3ed2c02f48b6463d1528e3e0b5f50e79c6 /src/Game.hs | |
parent | d7971385e844e24d9d851d3d142895b5cb89c91b (diff) | |
download | htanks-83f0606ea9dfd6b493097dc97330055dff4a2867.tar htanks-83f0606ea9dfd6b493097dc97330055dff4a2867.zip |
Added Transformable class to simplify collision calculation
Diffstat (limited to 'src/Game.hs')
-rw-r--r-- | src/Game.hs | 26 |
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] |