{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Magnet where import Control.Lens import Data.Aeson import Data.Aeson.TH import Geometry.Data newtype MagnetUpdate = MagnetUpdateTimer Int deriving (Eq, Ord, Show, Read) --Generic, Flat) data MagnetBuBu = MagnetBuId | MagnetBuBuCurveAroundField Float Float deriving (Eq, Ord, Show, Read) --Generic, Flat) data Magnet = Magnet { _mgID :: Int , _mgUpdate :: MagnetUpdate , _mgPos :: Point2 , _mgField :: MagnetBuBu } deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''Magnet deriveJSON defaultOptions ''MagnetUpdate deriveJSON defaultOptions ''MagnetBuBu deriveJSON defaultOptions ''Magnet