Files
loop/src/Dodge/Data/Projectile.hs
T
2024-12-27 23:04:59 +00:00

39 lines
976 B
Haskell

{-# 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 ProjectileType
= Grenade
| Rocket {_rocketHoming :: ProjectileHoming}
deriving (Eq, Ord, Show, Read) --Generic, Flat)
data Projectile
= Shell
{ _prjPos :: Point2
, _prjVel :: Point2
, _prjDir :: Float
, _prjSpin :: Float
, _prjID :: Int
, _prjPayload :: Payload
, _prjTimer :: Int
, _prjZ :: Float
, _prjZVel :: Float
, _prjUpdates :: [ProjectileUpdate]
, _prjType :: ProjectileType
}
deriving (Eq, Ord, Show, Read) --Generic, Flat)
makeLenses ''Projectile
makeLenses ''ProjectileType
deriveJSON defaultOptions ''ProjectileType
deriveJSON defaultOptions ''Projectile