{-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Laser where import Dodge.Data.Damage import NewInt import Dodge.Data.Item.Location --import Color import Control.Lens import Data.Aeson import Data.Aeson.TH import Geometry.Data data LaserType = DamageLaser {_laserTypeDamage :: Int} | TargetingLaser {_laserEmmiter :: NewInt ItmInt} deriving (Eq, Ord, Show, Read) --Generic, Flat) data Laser = Laser { _lpPhaseV :: Float , _lpPos :: Point2 , _lpDir :: Float , _lpType :: LaserType , _lpOrigin :: DamageOrigin } deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''Laser makeLenses ''LaserType deriveJSON defaultOptions ''LaserType deriveJSON defaultOptions ''Laser