{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Projectile where import Control.Lens import Data.Aeson import Data.Aeson.TH import Dodge.Data.Item.Use.Consumption.Ammo import Geometry.Data data Proj = Shell { _prjPos :: Point2 , _prjStartPos :: Point2 , _prjVel :: Point2 , _prjAcc :: Point2 , _prjDir :: Float , _prjSpin :: Float , _prjDraw :: ProjectileDraw , _prjID :: Int , _prjPayload :: Payload , _prjTimer :: Int , _prjZ :: Float , _prjUpdates :: [ProjectileUpdate] , _prjMITID :: Maybe Int } deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''Proj deriveJSON defaultOptions ''Proj