{-# 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.Params, module Dodge.Data.Item.Use, module Dodge.Data.Item.Scope, module Dodge.Data.Item.Combine, module Dodge.Data.Item.Location, ) where import Geometry.Data --import qualified Data.IntMap.Strict as IM import Control.Lens import Data.Aeson import Data.Aeson.TH import Dodge.Data.Item.Combine --import Dodge.Data.Item.Effect import Dodge.Data.Item.Location import Dodge.Data.Item.Misc import Dodge.Data.Item.Params import Dodge.Data.Item.Scope import Dodge.Data.Item.Use import NewInt data ItID = ItID deriving (Eq, Ord, Show, Read) data Consumables = NoConsumables | AmmoMag { _magLoadStatus :: ReloadStatus } deriving (Eq, Show, Read) data Item = Item { _itUse :: ItemUse , _itConsumables :: Maybe Int , _itType :: ItemType , _itID :: NewInt ItmInt , _itLocation :: ItemLocation -- , _itEffect :: ItEffect , _itTargeting :: ItemTargeting , _itParams :: ItemParams , _itScroll :: ItemScroll , _itTimeLastUsed :: Int } data ItemScroll = NoItemScroll | ItemScrollInt {_itsInt :: Int} | ItemScrollIntRange {_itsMax :: Int, _itsRangeInt :: Int} data ItemTargeting = NoItTargeting | ItTargeting { _itTgPos :: Maybe Point2 , _itTgID :: Maybe Int , _itTgActive :: Bool } makeLenses ''ItemTargeting makeLenses ''Consumables makeLenses ''Item makeLenses ''ItemScroll deriveJSON defaultOptions ''ItemScroll deriveJSON defaultOptions ''Consumables deriveJSON defaultOptions ''ItemTargeting deriveJSON defaultOptions ''ItID deriveJSON defaultOptions ''Item