{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.CamPos where import Control.Lens import Data.Aeson import Data.Aeson.TH import Geometry.Data data CamPos = CamPos { _camCenter :: Point2 , _camRot :: Float , _camZoom :: Float -- smaller values zoom out , _camItemZoom :: Float , _camDefaultZoom :: Float , _camViewFrom :: Point2 , _camViewDistance :: Float , _camBoundBox :: [Point2] , _camBoundDist :: (Float, Float, Float, Float) -- NSEW, S and W negative } makeLenses ''CamPos concat <$> mapM (deriveJSON defaultOptions) [ ''CamPos ]