Files
loop/src/Dodge/Data/Item/Combine.hs
T
2024-12-18 15:50:22 +00:00

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