206 lines
4.2 KiB
Haskell
206 lines
4.2 KiB
Haskell
{-# LANGUAGE StrictData #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
|
|
module Dodge.Data.Item.Combine where
|
|
|
|
import Dodge.Data.Magnet
|
|
import Dodge.Data.Payload
|
|
import Control.Lens
|
|
import Data.Aeson
|
|
import Data.Aeson.TH
|
|
import Dodge.Data.Equipment.Misc
|
|
import Dodge.Data.Item.BulletMod
|
|
import Dodge.Data.Item.Targeting
|
|
|
|
data ItemType
|
|
= HELD {_ibtHeld :: HeldItemType}
|
|
| EQUIP {_ibtEquip :: EquipItemType}
|
|
| CRAFT {_ibtCraft :: CraftType}
|
|
| ATTACH {_ibtAttach :: AttachType}
|
|
| AMMOMAG {_ibtAmmoMag :: AmmoMagType}
|
|
| TARGETING {_ibtTargeting :: TargetingType}
|
|
| BULLETMOD {_ibtBulletMod :: BulletMod}
|
|
| STICKYMOD
|
|
| ITEMSCAN
|
|
| MAPPER
|
|
| DROPPER InventoryPathing
|
|
| CLICKER InventoryPathing
|
|
| COPIER {_ibtPathing :: InventoryPathing}
|
|
| NULGATE
|
|
| UNIGATE
|
|
| BINGATE
|
|
| INTROSCAN {_ibtIntroScanType :: IntroScanType}
|
|
| DETECTOR {_ibtDetector :: Detector}
|
|
| ARHUD
|
|
| LASER
|
|
| COMPASS
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data InventoryPathing
|
|
= ABSOLUTE
|
|
| RELCURS
|
|
| RELITEM
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data IntroScanType
|
|
= HEALTH
|
|
| MAXHEALTH
|
|
deriving (Eq, Ord, Show, Read, Enum, Bounded)
|
|
|
|
data CraftType
|
|
= PIPE
|
|
| TUBE
|
|
| HARDWARE
|
|
| SPRING
|
|
| HOSE
|
|
| TAPE
|
|
| CAN
|
|
| TIN
|
|
| STEELDRUM
|
|
| PLANK
|
|
| GLASSSHARD
|
|
| SCRAPMETAL
|
|
| PUMP
|
|
| MOTOR
|
|
| TRANSFORMER
|
|
| BEAMSPLITTER
|
|
| PRISM
|
|
| LIGHTER
|
|
| MAGNET
|
|
| ANTIMATTER
|
|
| PLATE
|
|
| TRANSMITTER
|
|
| MICROCHIP
|
|
| HARDDRIVE
|
|
| RAM
|
|
| AIUNIT
|
|
| CAMERA
|
|
| MINIDISPLAY -- visual display unit
|
|
| NAILBOX
|
|
| IRONBAR
|
|
| LIGHTSENSOR
|
|
| SOUNDSENSOR
|
|
| HEATSENSOR
|
|
| MICROPHONE
|
|
| THERMOMETER
|
|
| CREATURESENSOR
|
|
| WIRE
|
|
| FUELCELL
|
|
| PORTABLEFUSION
|
|
deriving (Eq, Ord, Show, Read, Enum, Bounded)
|
|
|
|
data AttachType
|
|
= ZOOMSCOPE
|
|
| BULLETSYNTH
|
|
| REMOTESCREEN
|
|
| JOYSTICK
|
|
| GIMBAL
|
|
| GYROSCOPE
|
|
| UNDERBARRELSLOT
|
|
| REMOTEDETONATOR
|
|
| SMOKEREDUCER
|
|
| HOMINGMODULE
|
|
| SHELLPAYLOAD {_shellPayload :: Payload}
|
|
| CAPACITOR
|
|
| COMPRESSOR
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data AmmoMagType
|
|
= TINMAG
|
|
| DRUMMAG
|
|
| BELTMAG
|
|
| SHELLMAG
|
|
| BATTERY
|
|
| CHEMFUELPOUCH
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data ConsumableItemType
|
|
= MEDKIT Int
|
|
| EXPLOSIVES
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data EquipItemType
|
|
= MAGSHIELD MagnetBuBu
|
|
| FLAMESHIELD
|
|
| FRONTARMOUR
|
|
| WRISTARMOUR
|
|
| INVISIBILITYEQUIPMENT EquipType
|
|
| BRAINHAT
|
|
| HAT
|
|
| HEADLAMP
|
|
| POWERLEGS
|
|
| SPEEDLEGS
|
|
| JUMPLEGS
|
|
| FUELPACK
|
|
| BULLETBELTPACK
|
|
| BULLETBELTBRACER
|
|
| BATTERYPACK
|
|
| WRIST_ECG
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data HeldItemType
|
|
= BANGSTICK {_xNum :: Int}
|
|
| REWINDER
|
|
| TIMESTOPPER
|
|
| TIMESCROLLER
|
|
| PISTOL
|
|
| MACHINEPISTOL
|
|
| AUTOPISTOL
|
|
| SMG
|
|
| BANGCONE
|
|
| BLUNDERBUSS
|
|
| GRAPECANNON {_xNum :: Int}
|
|
| MINIGUNX {_xNum :: Int}
|
|
| VOLLEYGUN {_xNum :: Int}
|
|
| RIFLE
|
|
| ALTERIFLE
|
|
| AUTORIFLE
|
|
| BURSTRIFLE
|
|
| BANGROD
|
|
| ELEPHANTGUN
|
|
| AMR
|
|
| AUTOAMR
|
|
| SNIPERRIFLE
|
|
| FLAMESPITTER
|
|
| FLAMETHROWER
|
|
| FLAMETORRENT
|
|
| FLAMEWALL
|
|
| BLOWTORCH
|
|
| TESLACOIL
|
|
| TRACTORGUN
|
|
| RLAUNCHER
|
|
| RLAUNCHERX {_xNum :: Int}
|
|
| GLAUNCHER
|
|
| POISONSPRAYER
|
|
| SHATTERGUN
|
|
| LED
|
|
| FLATSHIELD
|
|
| KEYCARD Int
|
|
| BLINKER
|
|
| BLINKERUNSAFE
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
data Detector
|
|
= ITEMDETECTOR
|
|
| CREATUREDETECTOR
|
|
| WALLDETECTOR
|
|
deriving (Eq, Ord, Show, Read, Enum, Bounded) --Generic, Flat)
|
|
|
|
makeLenses ''ItemType
|
|
makeLenses ''HeldItemType
|
|
makeLenses ''AttachType
|
|
deriveJSON defaultOptions ''InventoryPathing
|
|
deriveJSON defaultOptions ''IntroScanType
|
|
deriveJSON defaultOptions ''CraftType
|
|
deriveJSON defaultOptions ''ConsumableItemType
|
|
deriveJSON defaultOptions ''AmmoMagType
|
|
deriveJSON defaultOptions ''AttachType
|
|
deriveJSON defaultOptions ''Detector
|
|
deriveJSON defaultOptions ''EquipItemType
|
|
--deriveJSON defaultOptions ''LeftItemType
|
|
deriveJSON defaultOptions ''HeldItemType
|
|
deriveJSON defaultOptions ''ItemType
|
|
|
|
--instance ToJSONKey ModuleSlot
|
|
--instance FromJSONKey ModuleSlot
|