49 lines
1.1 KiB
Haskell
49 lines
1.1 KiB
Haskell
{-# LANGUAGE DeriveGeneric #-}
|
|
{-# LANGUAGE DeriveAnyClass #-}
|
|
{-# LANGUAGE StrictData #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
|
|
module Dodge.Data.Item.Misc where
|
|
|
|
import Flat
|
|
import Control.Lens
|
|
import Data.Aeson
|
|
import Data.Aeson.TH
|
|
import Geometry.Data
|
|
import TH.Derive
|
|
import Data.Store
|
|
import LinearHelp
|
|
|
|
data ItemDimension = ItemDimension
|
|
{ _dimRad :: Float
|
|
, _dimCenter :: Point3
|
|
, _dimAttachPos :: Point3
|
|
}
|
|
deriving (Eq, Show, Read, Generic, Flat)
|
|
|
|
data ItemPortage
|
|
= HeldItem
|
|
{ _handlePos :: Float
|
|
, _muzPos :: Float
|
|
}
|
|
| WornItem
|
|
| NoPortage
|
|
deriving (Eq, Show, Read, Generic, Flat)
|
|
|
|
data ItemValue = ItemValue
|
|
{ _ivInt :: Int
|
|
, _ivType :: ItemValueType
|
|
}
|
|
deriving (Eq, Show, Read, Generic, Flat)
|
|
|
|
data ItemValueType = MundaneItem | ArtefactItem
|
|
deriving (Eq, Show, Read, Generic, Flat)
|
|
|
|
makeLenses ''ItemDimension
|
|
makeLenses ''ItemPortage
|
|
makeLenses ''ItemValue
|
|
deriveJSON defaultOptions ''ItemDimension
|
|
deriveJSON defaultOptions ''ItemPortage
|
|
deriveJSON defaultOptions ''ItemValue
|
|
deriveJSON defaultOptions ''ItemValueType
|