This commit is contained in:
2022-07-27 12:49:23 +01:00
parent 6554d219dc
commit 8d17ce66e9
106 changed files with 2911 additions and 2678 deletions
+232
View File
@@ -0,0 +1,232 @@
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.Item.Combine where
import Dodge.Data.Item.Use.Consumption
import Control.Lens
import Data.Aeson
import Data.Aeson.TH
import qualified Data.Map.Strict as M
import Dodge.Data.Equipment.Misc
data ItemType = ItemType
{ _iyBase :: ItemBaseType
, _iyModules :: M.Map ModuleSlot ItemModuleType
, _iyStack :: Stack
}
deriving (Eq, Ord, Show, Read)
data Stack = NoStack | Stack ItAmount
deriving (Eq, Ord, Show, Read)
data CraftType
= PIPE
| TUBE
| HARDWARE
| SPRING
| DUCTTAPE
| CAN
| TIN
| DRUM
| PLANK
| SHARDGLASS
| PUMP
| MOTOR
| TRANSFORMER
| PRISM
| THERMOMETER
| LIGHTER
| MAGNET
| ANTIMATTER
| PLATE
| TRANSMITTER
| MICROCHIP
| AIUNIT
| CAMERA
| MINIDISPLAY -- visual display unit
| LED
| NAILBOX
| IRONBAR
| LIGHTSENSOR
| SOUNDSENSOR
| HEATSENSOR
| CREATURESENSOR
| WIRE
| BATTERY
| FUELCELL
| PORTABLEFUSION
| INCENDIARYMODULE
| STATICMODULE
| CONCUSSMODULE
| FRAGMODULE
| FLASHMODULE
| BOUNCEMODULE
| PENMODULE
| TELEPORTMODULE
| TIMEMODULE
| SIZEMODULE
| GRAVITYMODULE
deriving (Eq, Ord, Show, Enum, Read)
data ItemBaseType
= HELD {_ibtHeld :: HeldItemType}
| LEFT {_ibtLeft :: LeftItemType}
| EQUIP {_ibtEquip :: EquipItemType}
| Consumable {_ibtConsumable :: ConsumableItemType}
| CRAFT CraftType
deriving (Eq, Ord, Show, Read)
data ConsumableItemType
= MEDKIT Int
deriving (Eq, Ord, Show, Read)
data EquipItemType
= MAGSHIELD
| FLAMESHIELD
| FRONTARMOUR
| WRISTARMOUR
| INVISIBILITYEQUIPMENT EquipSite
| BRAINHAT
| HAT
| HEADLAMP
| HEADLAMP1
| POWERLEGS
| SPEEDLEGS
| JUMPLEGS
| JETPACK
| AUTODETECTOR Detector
deriving (Eq, Ord, Show, Read)
data LeftItemType
= BOOSTER
| REWINDER
| BLINKER
| BLINKERUNSAFE
| SHRINKER
| SPAWNER
deriving (Eq, Ord, Show, Read)
data HeldItemType
= BANGSTICK {_xNum :: Int}
| PISTOL
| REVOLVER
| REVOLVERX {_xNum :: Int}
| MACHINEPISTOL
| AUTOPISTOL
| SMG
| BANGCONE
| BLUNDERBUSS
| GRAPECANNON {_xNum :: Int}
| -- | GRENADELAUNCHER Int -- number of chambers that can be reloaded
-- | MORTARCONE / HANDMORTAR
MINIGUNX {_xNum :: Int}
| VOLLEYGUN {_xNum :: Int}
| RIFLE
| REPEATER
| AUTORIFLE
| BURSTRIFLE
| -- | FASTBURSTRIFLE
-- | COMPLETEBURSTRIFLE
BANGROD
| ELEPHANTGUN
| AMR
| AUTOAMR
| SNIPERRIFLE
| MACHINEGUN
| FLAMESPITTER
| FLAMETHROWER
| FLAMETORRENT
| FLAMEWALL
| BLOWTORCH
| SPARKGUN
| TESLAGUN
| LASGUN
| LASCIRCLE
| -- | LASPULSE
DUALBEAM
| -- | LASGUNSWING
-- | LASGUNSWAY
-- | LASGUNWIDEPULSE
LASWIDE {_xNum :: Int}
| -- | LASGUNFOCUS Int
-- | SONICGUN
TRACTORGUN
| LAUNCHER
| LAUNCHERX {_xNum :: Int}
| -- | TRACKINGLAUNCHER
REMOTELAUNCHER
| POISONSPRAYER
| DRONELAUNCHER
| SHATTERGUN
| FORCEFIELDGUN
| HELDDETECTOR Detector
| TORCH
| FLATSHIELD
| KEYCARD Int
deriving (Eq, Ord, Show, Read)
data ItemModuleType
= EMPTYMODULE
| DRUMMAG
| BELTMAG
| MAGNETMAG
| INCENDBUL
| BOUNCEBUL
| PENBUL
| STATICBUL
| CONCUSBUL
| TARGCR
| TARGLAS
| TARGPOS
| MAGNETTRAJ
| FLECHETRAJ
| BEZIERTRAJ
| INCENDLAS
| SPLITLAS
| STATICLAS
| WEPTELE
| LAUNCHHOME
| EXTRABATTERY
| ATTACHTORCH
deriving (Eq, Ord, Show, Read)
data Detector
= ITEMDETECTOR
| CREATUREDETECTOR
| WALLDETECTOR
deriving (Eq, Ord, Show, Read)
data ModuleSlot
= ModBullet
| ModBulletSpawn
| ModRifleMag
| ModAutoMag
| ModTarget
| ModBulletTrajectory
| ModLauncherHoming
| ModBattery
| ModTeleport
| ModDualBeam
| ModHeldAttach
deriving (Eq, Ord, Show, Read)
instance ToJSONKey ModuleSlot
instance FromJSONKey ModuleSlot
deriveJSON defaultOptions ''ItemType
deriveJSON defaultOptions ''Stack
deriveJSON defaultOptions ''CraftType
deriveJSON defaultOptions ''ItemBaseType
deriveJSON defaultOptions ''ConsumableItemType
deriveJSON defaultOptions ''EquipItemType
deriveJSON defaultOptions ''LeftItemType
deriveJSON defaultOptions ''HeldItemType
deriveJSON defaultOptions ''ItemModuleType
deriveJSON defaultOptions ''Detector
deriveJSON defaultOptions ''ModuleSlot
makeLenses ''ItemType
makeLenses ''ItemBaseType
makeLenses ''HeldItemType