{-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Item.Scope where import Control.Lens import Data.Aeson import Data.Aeson.TH import Geometry.Data data Scope = NoScope | RemoteScope { -- | a camera offset _scopePos :: Point2 , _scopeZoom :: Float , -- | if the camera offset is also the center of vision _scopeIsCamera :: Bool } | ZoomScope { -- | a camera offset _scopePos :: Point2 , _scopeZoomChange :: Int , _scopeZoom :: Float , _scopeDefaultZoom :: Float , -- | if the camera offset is also the center of vision _scopeIsCamera :: Bool } deriving (Eq, Show, Read) makeLenses ''Scope deriveJSON defaultOptions ''Scope