Add generic derivations and To/FromJSON instances
This commit is contained in:
+15
-6
@@ -1,15 +1,19 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Laser
|
||||
where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Color
|
||||
import Geometry.Data
|
||||
import Control.Lens
|
||||
|
||||
data LaserType = DamageLaser {_laserTypeDamage :: Int}
|
||||
| TargetLaser
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON LaserType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON LaserType
|
||||
data LaserStart = LaserStart
|
||||
{ _lpPhaseV :: Float
|
||||
, _lpPos :: Point2
|
||||
@@ -17,14 +21,19 @@ data LaserStart = LaserStart
|
||||
, _lpColor :: Color
|
||||
, _lpType :: LaserType
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON LaserStart where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON LaserStart
|
||||
data Laser = Laser
|
||||
{ _laColor :: Color
|
||||
, _laPoints :: [Point2]
|
||||
, _laType :: LaserType
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Laser where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Laser
|
||||
makeLenses ''Laser
|
||||
makeLenses ''LaserStart
|
||||
makeLenses ''LaserType
|
||||
|
||||
Reference in New Issue
Block a user