{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.Data.ComposedItem where import Control.Lens import Dodge.Data.AmmoType import Dodge.Data.Item import Linear import qualified Linear.Quaternion as Q data ItemSF -- Structural Function = UnloadedWeaponSF | HeldPlatformSF | UnderBarrelSlotSF | UnderBarrelPlatformSF | EquipmentPlatformSF | GadgetPlatformSF | WeaponScopeSF | WeaponTargetingSF | IntroScanSF | TriggerSF | ARHUDSF | AmmoMagSF {_amsfLink :: Int , _amsfType :: AmmoType} | RemoteScreenSF | JoystickSF | RemoteDetonatorSF | SmokeReducerSF | NoSF | AmmoModifierSF AmmoType | AmmoTargetingSF AmmoType | AmmoPayloadSF AmmoType | AmmoEffectSF AmmoType | FunctionChangeSF | MakeAutoSF | ProjectileStabiliserSF | GrenadeHitEffectSF | ToggleSF | MapperSF | LaserWeaponSF | PulseLaserSF | CapacitorSF | TransformerSF | PulseBallSF | PlasmaSF | TorchSF | PumpSF deriving (Eq, Ord, Show, Read) type CItem = (Item, ItemSF) type OItem = (Item, ItemSF, (V3 Float,Q.Quaternion Float)) makeLenses ''ItemSF