Files
loop/src/Dodge/Data/Magnet.hs
T
2022-08-21 22:41:19 +01:00

33 lines
785 B
Haskell

{-# 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