{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.ComposedItem where import Dodge.Data.AmmoType import Control.Lens import Dodge.Data.Item import Linear import qualified Linear.Quaternion as Q data ItemLink = AmmoInLink Int AmmoType | TriggerLink | AmmoModLink | AmmoTargetingLink | AmmoPayloadLink | AmmoEffectLink | WeaponScopeLink | WeaponTargetingLink | JoystickLink | RemoteScreenLink | RemoteDetonatorLink | SmokeReducerLink -- | AugmentedHUDLink | FunctionChangeLink | MakeAutoLink | ProjectileStabiliserLink | UnderBarrelSlotLink | UnderBarrelPlatformLink | GrenadeHitEffectLink | SFLink {_sfLink :: ItemStructuralFunction} deriving (Eq, Ord, Show, Read) data ItemStructuralFunction = UnloadedWeaponSF | HeldPlatformSF | UnderBarrelSlotSF | UnderBarrelPlatformSF | EquipmentPlatformSF | GadgetPlatformSF | WeaponScopeSF | WeaponTargetingSF | IntroScanSF | TriggerSF | ARHUDSF | AmmoMagSF AmmoType | RemoteScreenSF | JoystickSF | RemoteDetonatorSF | SmokeReducerSF | NoSF | AmmoModifierSF AmmoType | AmmoTargetingSF AmmoType | AmmoPayloadSF AmmoType | AmmoEffectSF AmmoType | FunctionChangeSF | MakeAutoSF | ProjectileStabiliserSF | GrenadeHitEffectSF | ToggleSF | MapperSF deriving (Eq, Ord, Show, Read) type CItem = (Item, ItemStructuralFunction) type OItem = (Item, ItemStructuralFunction, (V3 Float,Q.Quaternion Float)) makeLenses ''ItemLink