{-# 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, module Dodge.Data.Item.Targeting, ) where import Linear 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 import Dodge.Data.Item.Targeting data ItemUse = HeldUse { _heldUse :: Huse , _heldDelay :: UseDelay , _heldMods :: HeldMod , _heldHammer :: HammerPosition , _heldAim :: AimParams , _heldScroll :: HeldScroll , _heldConsumption :: HeldConsumption -- , _useTargeting :: Maybe TargetType } | LeftUse { _leftUse :: Luse , _leftDelay :: UseDelay , _leftHammer :: HammerPosition , _equipEffect :: EquipEffect , _leftConsumption :: LeftConsumption } | ConsumeUse { _cUse :: Cuse , _useAmount :: ItAmount } | EquipUse { _equipEffect :: EquipEffect , _equipTargeting :: Maybe TargetType } | CraftUse {_useAmount :: ItAmount} --deriving (Eq, Show, Read) --Generic, Flat) data ItemUse' = ItemHeld HeldUse' | ItemEquip EquipUse' | ItemConsume ConsumeUse' | ItemCraft Int data HeldUse' = HeldUse' data EquipUse' = EquipUse' data ConsumeUse' = ConsumeUse' data AimParams = AimParams { _aimWeight :: Int , _aimTurnSpeed :: Float , _aimRange :: Float , _aimZoom :: ItZoom , _aimStance :: AimStance , _aimHandlePos :: V2 Float , _aimMuzzles :: [Muzzle] } --deriving (Eq, Ord, Show, Read) --Generic, Flat) data Muzzle = Muzzle { _mzPos :: V2 Float , _mzRot :: Float , _mzInaccuracy :: Float } data AimStance = TwoHandUnder | TwoHandOver | TwoHandFlat | OneHand -- | LeaveHolstered deriving (Eq) --deriving (Eq, Show, Ord, Enum, Read) --Generic, Flat) data ItZoom = ItZoom { _izMax :: Float , _izMin :: Float , _izFac :: Float } --deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''ItemUse makeLenses ''AimParams makeLenses ''ItZoom makeLenses ''Muzzle deriveJSON defaultOptions ''Muzzle deriveJSON defaultOptions ''AimStance deriveJSON defaultOptions ''ItZoom deriveJSON defaultOptions ''AimParams deriveJSON defaultOptions ''ItemUse