Files
loop/src/Dodge/Data/Laser.hs
T
2022-08-21 12:21:05 +01:00

48 lines
1.1 KiB
Haskell

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.Laser where
import TH.Derive
import Data.Store
import Data.Binary
import Flat
import Color
import Control.Lens
import Data.Aeson
import Data.Aeson.TH
import Geometry.Data
data LaserType
= DamageLaser {_laserTypeDamage :: Int}
| TargetLaser
deriving (Eq, Ord, Show, Read, Generic, Flat)
$($(derive [d| instance Deriving (Store LaserType) |]))
data LaserStart = LaserStart
{ _lpPhaseV :: Float
, _lpPos :: Point2
, _lpDir :: Float
, _lpColor :: Color
, _lpType :: LaserType
}
deriving (Eq, Ord, Show, Read, Generic, Flat)
$($(derive [d| instance Deriving (Store LaserStart ) |]))
data Laser = Laser
{ _laColor :: Color
, _laPoints :: [Point2]
, _laType :: LaserType
}
deriving (Eq, Ord, Show, Read, Generic, Flat)
$($(derive [d| instance Deriving (Store Laser ) |]))
makeLenses ''Laser
makeLenses ''LaserStart
makeLenses ''LaserType
deriveJSON defaultOptions ''LaserType
deriveJSON defaultOptions ''LaserStart
deriveJSON defaultOptions ''Laser