{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.CrGroupParams where import Control.Lens import Data.Aeson import Data.Aeson.TH import qualified Data.IntSet as IS import Geometry.Data data CrGroupParams = CrGroupParams { _crGroupParamID :: Int , _crGroupIDs :: IS.IntSet , _crGroupCenter :: Point2 , _crGroupUpdate :: CrGroupUpdate --World -> CrGroupParams -> Maybe CrGroupParams } deriving (Eq, Ord, Show, Read) --Generic, Flat) data CrGroupUpdate = DefaultCrGroupUpdate deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''CrGroupParams deriveJSON defaultOptions ''CrGroupUpdate deriveJSON defaultOptions ''CrGroupParams