{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Item.Effect ( module Dodge.Data.Item.Effect, module Dodge.Data.BlBl, ) where import Control.Lens import Data.Aeson import Data.Aeson.TH import Dodge.Data.BlBl data ItEffect = ItEffect { _ieInv :: ItInvEffect --Item -> Creature -> World -> World , _ieOnInsert :: ItInvEffect , _ieOnDrop :: ItInvEffect --Item -> Creature -> World -> World } deriving (Eq, Ord, Show, Read) --Generic, Flat) data ItInvEffect = NoInvEffect | EffectRootNotroot ItInvEffect ItInvEffect | CreateShieldWall | RemoveShieldWall | EffectWhileRoot ItInvEffect | EffectWhileAttached ItInvEffect | ItemUseToggle BlBl | ItemCancelExamineInventory | ItemCopierUpdate | ItemReduceWarmTime | ItemSetWarmTime Int deriving (Eq, Ord, Show, Read) --Generic, Flat) data ItDropEffect = NoDropEffect deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''ItEffect deriveJSON defaultOptions ''ItInvEffect deriveJSON defaultOptions ''ItDropEffect deriveJSON defaultOptions ''ItEffect