{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Item.Use.Equipment ( module Dodge.Data.Equipment.Misc, module Dodge.Data.Item.Use.Equipment, ) where import Geometry.Data import Control.Lens import Data.Aeson import Data.Aeson.TH import Dodge.Data.Equipment.Misc import Dodge.Data.Item.HeldUse data EquipEffect = EquipEffect { _eeUse :: Euse --Item -> Creature -> World -> World , _eeOnEquip :: Euse --Item -> Creature -> World -> World , _eeOnRemove :: Euse --Item -> Creature -> World -> World , _eeSite :: EquipSite , _eeParams :: EquipParams , _eeViewDist :: Maybe Float , _eeAttachPos :: Point3 } deriving (Eq, Ord, Show, Read) --Generic, Flat) data EquipParams = NoEquipParams | EquipID {_eparamID :: Int} | EquipCounter {_eparamInt :: Int} deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''EquipEffect makeLenses ''EquipParams deriveJSON defaultOptions ''EquipParams deriveJSON defaultOptions ''EquipEffect