Files
loop/src/Dodge/Data/Item/Combine.hs
T
2024-12-20 18:14:27 +00:00

184 lines
3.6 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}
| 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
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 EquipType
| BRAINHAT
| HAT
| HEADLAMP
| POWERLEGS
| SPEEDLEGS
| JUMPLEGS
| FUELPACK
| BULLETBELTPACK
| BULLETBELTBRACER
| BATTERYPACK
| WRIST_ECG
deriving (Eq, Ord, Show, Read)
--data LeftItemType
-- = STOPWATCH
-- | SCROLLWATCH
-- | SPAWNER
-- deriving (Eq, Ord, Show, Read) --Generic, Flat)
data HeldItemType
= BANGSTICK {_xNum :: Int}
| REWINDER
| TIMESTOPPER
| TIMESCROLLER
| 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
| SHATTERGUN
| TORCH
| FLATSHIELD
| KEYCARD Int
| DETECTOR Detector
| 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 ''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