{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.Item.Attachment.Data where import Geometry.Data import Control.Lens import qualified Data.Sequence as Seq data ItAttachment = AttachFuse {_atFuseTime :: Int} | AttachMode {_atMode :: Int} | AttachCharMode {_atCharMode :: Seq.Seq Char } | AttachTargetPos { _atTargetPos :: Point2 } | AttachInt { _atInt :: Int } | AttachMInt { _atMInt :: Maybe Int } | AttachFloat { _atFloat :: Float } | AttachBool { _atBool :: Bool } | NoItAttachment data Scope = NoScope | RemoteScope {_scopePos :: Point2 -- ^ a camera offset ,_scopeZoom :: Float ,_scopeIsCamera :: Bool -- ^ if the camera offset is also the center of vision } | ZoomScope {_scopePos :: Point2 -- ^ a camera offset ,_scopeZoomChange :: Int ,_scopeZoom :: Float ,_scopeDefaultZoom :: Float ,_scopeIsCamera :: Bool -- ^ if the camera offset is also the center of vision } makeLenses ''ItAttachment makeLenses ''Scope