73 lines
1.7 KiB
Haskell
73 lines
1.7 KiB
Haskell
{-# 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
|