189 lines
3.7 KiB
Haskell
189 lines
3.7 KiB
Haskell
{-# LANGUAGE DeriveAnyClass #-}
|
|
--{-# LANGUAGE DeriveGeneric #-}
|
|
{-# LANGUAGE StrictData #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
|
|
module Dodge.Data.Item.Combine where
|
|
|
|
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}
|
|
| LEFT {_ibtLeft :: LeftItemType}
|
|
| EQUIP {_ibtEquip :: EquipItemType}
|
|
| CONSUMABLE {_ibtConsumable :: ConsumableItemType}
|
|
| CRAFT {_ibtCraft :: CraftType}
|
|
| ATTACH {_ibtAttach :: AttachType}
|
|
| AMMOMAG {_ibtAmmoMag :: AmmoMagType}
|
|
| TARGETING {_ibtTargeting :: TargetingType}
|
|
| BULLETMOD {_ibtBulletMod :: BulletMod}
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
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
|
|
| LED
|
|
| NAILBOX
|
|
| IRONBAR
|
|
| LIGHTSENSOR
|
|
| SOUNDSENSOR
|
|
| HEATSENSOR
|
|
| MICROPHONE
|
|
| THERMOMETER
|
|
| CREATURESENSOR
|
|
| WIRE
|
|
| FUELCELL
|
|
| PORTABLEFUSION
|
|
| FRAGMODULE
|
|
| FLASHMODULE
|
|
| GASINJECTOR
|
|
| FLAKCRAFT
|
|
| FRAGCRAFT
|
|
| TELEPORTMODULE
|
|
| TIMEMODULE
|
|
| SIZEMODULE
|
|
| GRAVITYMODULE
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data AttachType
|
|
= ZOOMSCOPE
|
|
| BULLETSYNTH
|
|
| REMOTESCREEN
|
|
| HOMINGMODULE
|
|
| AUGMENTEDHUD
|
|
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
|
|
| FLAMESHIELD
|
|
| FRONTARMOUR
|
|
| WRISTARMOUR
|
|
| INVISIBILITYEQUIPMENT EquipSite
|
|
| BRAINHAT
|
|
| HAT
|
|
| HEADLAMP
|
|
| POWERLEGS
|
|
| SPEEDLEGS
|
|
| JUMPLEGS
|
|
| FUELPACK
|
|
| BULLETBELTPACK
|
|
| BULLETBELTBRACER
|
|
| BATTERYPACK
|
|
| WRIST_ECG
|
|
deriving (Eq, Ord, Show, Read)
|
|
|
|
data LeftItemType
|
|
= BOOSTER
|
|
| STOPWATCH
|
|
| REWINDWATCH
|
|
| SCROLLWATCH
|
|
| BLINKER
|
|
| BLINKERUNSAFE
|
|
| SPAWNER
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
data HeldItemType
|
|
= BANGSTICK {_xNum :: Int}
|
|
| PISTOL
|
|
| MACHINEPISTOL
|
|
| AUTOPISTOL
|
|
| SMG
|
|
| BANGCONE
|
|
| BLUNDERBUSS
|
|
| GRAPECANNON {_xNum :: Int}
|
|
| MINIGUNX {_xNum :: Int}
|
|
| VOLLEYGUN {_xNum :: Int}
|
|
| RIFLE
|
|
| AUTORIFLE
|
|
| BURSTRIFLE
|
|
| BANGROD
|
|
| ELEPHANTGUN
|
|
| AMR
|
|
| AUTOAMR
|
|
| SNIPERRIFLE
|
|
| FLAMESPITTER
|
|
| FLAMETHROWER
|
|
| FLAMETORRENT
|
|
| FLAMEWALL
|
|
| BLOWTORCH
|
|
| SPARKGUN
|
|
| TESLAGUN
|
|
| LASER
|
|
| TRACTORGUN
|
|
| LAUNCHER
|
|
| LAUNCHERX {_xNum :: Int}
|
|
| POISONSPRAYER
|
|
| DRONELAUNCHER
|
|
| SHATTERGUN
|
|
| TORCH
|
|
| FLATSHIELD
|
|
| KEYCARD Int
|
|
| DETECTOR Detector
|
|
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 ''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
|