227 lines
4.1 KiB
Haskell
227 lines
4.1 KiB
Haskell
{-# LANGUAGE TemplateHaskell #-}
|
|
module Dodge.Combine.Data
|
|
where
|
|
import Dodge.Equipment.Data
|
|
import Dodge.Data.ItemAmount
|
|
import Control.Lens
|
|
import qualified Data.Map.Strict as M
|
|
|
|
-- this should probably store loaded ammo
|
|
data ItemType = ItemType
|
|
{_iyBase :: ItemBaseType
|
|
,_iyModules :: M.Map ModuleSlot ItemModuleType
|
|
,_iyStack :: Stack
|
|
}
|
|
deriving (Eq,Ord,Show,Read)
|
|
|
|
data Stack = NoStack | Stack IcAmount
|
|
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
|
|
-- Modules
|
|
-- bullet
|
|
| INCENDIARYMODULE
|
|
| STATICMODULE
|
|
| CONCUSSMODULE
|
|
| FRAGMODULE
|
|
| FLASHMODULE
|
|
| BOUNCEMODULE
|
|
| PENMODULE
|
|
--
|
|
| TELEPORTMODULE
|
|
| TIMEMODULE
|
|
| SIZEMODULE
|
|
| GRAVITYMODULE
|
|
deriving (Eq,Ord,Show,Enum,Read)
|
|
|
|
-- TODO make this an enum somehow...?
|
|
data ItemBaseType
|
|
= NOTDEFINED
|
|
| EFFGUN String
|
|
| AUTOEFFGUN String
|
|
-- Weapons
|
|
| HELD {_ibtHeld :: HeldItemType}
|
|
| LEFT {_ibtLeft :: LeftItemType}
|
|
| EQUIP {_ibtEquip :: EquipItemType}
|
|
-- | GRENADE
|
|
-- | REMOTEBOMB
|
|
-- Utility items
|
|
-- Equipment
|
|
--
|
|
| KEYCARD Int
|
|
--
|
|
| MEDKIT Int
|
|
| CRAFT CraftType
|
|
--
|
|
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
|
|
-- | MINIGUN
|
|
| 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
|
|
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)
|
|
|
|
makeLenses ''ItemType
|
|
makeLenses ''ItemBaseType
|
|
makeLenses ''HeldItemType
|