{-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.WorldEffect where import qualified Data.Set as S import Dodge.Data.Item.Location import NewInt import Dodge.Data.LightSource import Data.Aeson import Data.Aeson.TH import Dodge.Data.CreatureEffect import Dodge.Data.SoundOrigin import Geometry.Data import Sound.Data data ItCrWdWd = ItCrWdItemHeldEffect | ItCrWdItemHeldEffectNoHammer --deriving (Eq, Ord, Show, Read) --Generic, Flat) data SoundFilter = FilterBySoundOrigin (S.Set SoundOrigin) | NoSoundFilter data WdWd = NoWorldEffect | SetTrigger Bool Int | WorldEffects [WdWd] -- probably best to avoid recursive types if possible... | SetLSCol Point3 Int | AccessTerminal Int | UnlockInv | SoundStart SoundOrigin Point2 SoundID (Maybe Int) | MakeStartCloudAt Point3 | TorqueCr Float Int | WdWdNegateTrig Int -- | WdWdFromItCrixWdWd (LabelDoubleTree ComposeLinkType Item) Int ItCrWdWd | MakeTempLight LSParam Int | MakeTempLightFade Float LSParam Int | UseInvItem Int Int -- invid presstime | WdWdBurstFireRepetition Int (NewInt InvInt) | WdWdSetSoundFilter SoundFilter --deriving (Eq, Show, Read) --, Generic) --h--deriving (Eq, Show, Read) --Generic, Flat) data WdP2 = WdP2Const Point2 | WdYouPos --deriving (Eq, Ord, Show, Read) --Generic, Flat) data MdWdWd = MdWdId | MdTrigIf MdWdWd MdWdWd | MdSetLSCol Point3 | MdFlickerUpdate --deriving (Eq, Ord, Show, Read) --Generic, Flat) data WdBl = WdTrig Int | WdBlDoorMoving Int | WdBlConst Bool | WdBlNegate WdBl | WdBlCrFilterNearPoint Float Point2 CrBl | WdBlBtOn Int -- | WdBlBtNotOff Int data WdP2f = WdP2f0 | WdP2fDoorPosition Int deriveJSON defaultOptions ''SoundFilter deriveJSON defaultOptions ''ItCrWdWd deriveJSON defaultOptions ''WdWd deriveJSON defaultOptions ''WdP2 deriveJSON defaultOptions ''MdWdWd deriveJSON defaultOptions ''WdBl deriveJSON defaultOptions ''WdP2f