Files
loop/src/Dodge/Data/Item/Combine.hs
T

204 lines
4.1 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
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
| 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
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
| SPARKGUN
| TESLAGUN
| 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