{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Item.Use ( module Dodge.Data.Item.Use, module Dodge.Data.Item.Use.Equipment, module Dodge.Data.Item.HeldUse, module Dodge.Data.Item.HeldScroll, module Dodge.Data.Item.HeldDelay, module Dodge.Data.Item.Use.Consumption, module Dodge.Data.Hammer, ) where import Flat import Control.Lens import Data.Aeson import Data.Aeson.TH import Dodge.Data.Hammer import Dodge.Data.Item.HeldScroll import Dodge.Data.Item.HeldUse import Dodge.Data.Item.Use.Consumption import Dodge.Data.Item.Use.Equipment import Dodge.Data.Item.HeldDelay data ItemUse = HeldUse { _heldUse :: HeldUse , _heldDelay :: UseDelay , _heldMods :: HeldMod , _heldHammer :: HammerPosition , _heldAim :: AimParams , _heldScroll :: HeldScroll , _heldConsumption :: HeldConsumption } | LeftUse { _leftUse :: Luse , _leftDelay :: UseDelay , _leftHammer :: HammerPosition , _equipEffect :: EquipEffect , _leftConsumption :: LeftConsumption } | ConsumeUse { _cUse :: Cuse , _useAmount :: ItAmount } | EquipUse { _equipEffect :: EquipEffect } | CraftUse {_useAmount :: ItAmount} deriving (Eq, Show, Read, Generic, Flat) data AimParams = AimParams { _aimWeight :: Int , _aimRange :: Float , _aimZoom :: ItZoom , _aimStance :: AimStance , _aimHandlePos :: Float , _aimMuzPos :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) data AimStance = TwoHandTwist | TwoHandFlat | OneHand | LeaveHolstered deriving (Eq, Show, Ord, Enum, Read, Generic, Flat) data ItZoom = ItZoom { _itZoomMax :: Float , _itZoomMin :: Float , _itZoomFac :: Float } deriving (Eq, Ord, Show, Read, Generic, Flat) makeLenses ''ItemUse makeLenses ''AimParams makeLenses ''ItZoom deriveJSON defaultOptions ''ItemUse deriveJSON defaultOptions ''AimParams deriveJSON defaultOptions ''AimStance deriveJSON defaultOptions ''ItZoom