This repository has been archived on 2025-03-03. You can view files and clone it, but cannot push or open issues or pull requests.
htanks/src/Game.hs

38 lines
812 B
Haskell

{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Game ( Bullet(..)
, bulletX
, bulletY
, GameState(..)
) where
import Level
import Tank
import Transformable
import Vector
data Bullet = Bullet
{ 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]
, bullets :: ![Bullet]
} deriving (Show)