55 lines
1.1 KiB
Haskell
55 lines
1.1 KiB
Haskell
{-# 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
|