{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Shockwave where import Color import Control.Lens import Data.Aeson import Data.Aeson.TH import Geometry.Data data ShockwaveDirection = OutwardShockwave | InwardShockwave deriving (Eq, Ord, Show, Read) --Generic, Flat) data Shockwave = Shockwave { _swColor :: Color , _swDirection :: ShockwaveDirection , _swInvulnerableCrs :: [Int] , _swPos :: Point2 , _swRad :: Float , _swDam :: Int , _swPush :: Float , _swMaxTime :: Int , _swTimer :: Int } deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''Shockwave deriveJSON defaultOptions ''ShockwaveDirection deriveJSON defaultOptions ''Shockwave