42 lines
1.1 KiB
Haskell
42 lines
1.1 KiB
Haskell
{-# LANGUAGE DeriveGeneric #-}
|
|
{-# LANGUAGE DeriveAnyClass #-}
|
|
{-# LANGUAGE StrictData #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
|
|
module Dodge.Data.Item.Effect where
|
|
|
|
import Control.Lens
|
|
import Data.Aeson
|
|
import Data.Aeson.TH
|
|
|
|
data ItEffect = ItEffect
|
|
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
|
, _ieOnInsert :: ItInvEffect
|
|
, _ieOnDrop :: ItInvEffect --Item -> Creature -> World -> World
|
|
, _ieOnHeld :: ItInvEffect
|
|
, _ieOnStash :: ItInvEffect
|
|
}
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
data ItInvEffect
|
|
= NoInvEffect
|
|
| RewindEffect
|
|
| EffectIfHeld ItInvEffect ItInvEffect
|
|
| CreateHeldLight
|
|
| CreateShieldWall
|
|
| RemoveShieldWall
|
|
| EffectWhileHeld ItInvEffect
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
data ItFloorEffect = NoFloorEffect
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
data ItDropEffect = NoDropEffect
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
makeLenses ''ItEffect
|
|
deriveJSON defaultOptions ''ItInvEffect
|
|
deriveJSON defaultOptions ''ItFloorEffect
|
|
deriveJSON defaultOptions ''ItDropEffect
|
|
deriveJSON defaultOptions ''ItEffect
|