{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Item ( module Dodge.Data.Item, module Dodge.Data.Item.Effect, module Dodge.Data.Item.Misc, module Dodge.Data.Item.Tweak, module Dodge.Data.Item.Params, module Dodge.Data.Item.Use, module Dodge.Data.Item.CurseStatus, module Dodge.Data.Item.Scope, module Dodge.Data.Item.Combine, module Dodge.Data.Item.Targeting, module Dodge.Data.Item.Location, ) where import Flat import Data.Store import TH.Derive import Color import Control.Lens import Data.Aeson import Data.Aeson.TH import Dodge.Data.Item.Combine import Dodge.Data.Item.Effect import Dodge.Data.Item.Scope import Dodge.Data.Item.CurseStatus import Dodge.Data.Item.Misc import Dodge.Data.Item.Params import Dodge.Data.Item.Tweak import Dodge.Data.Item.Use import Dodge.Data.Item.Targeting import Dodge.Data.Item.Location data Item = Item { _itUse :: ItemUse , _itType :: ItemType , _itID :: Int , _itLocation :: ItemLocation , _itIsHeld :: Bool , _itEffect :: ItEffect , _itInvSize :: Float , _itInvColor :: Color , _itTargeting :: Targeting , _itDimension :: ItemDimension , _itCurseStatus :: CurseStatus , _itTweaks :: ItemTweaks , _itScope :: Scope , _itValue :: ItemValue , _itParams :: ItemParams } deriving (Eq, Show, Read, Generic, Flat) _itUseAimStance :: Item -> AimStance _itUseAimStance = _aimStance . _heldAim . _itUse makeLenses ''Item deriveJSON defaultOptions ''Item