Make items recoverable from base type

This commit is contained in:
2022-06-14 22:09:26 +01:00
parent f3e1a34164
commit 485c42eb24
15 changed files with 537 additions and 241 deletions
+101 -96
View File
@@ -2,110 +2,23 @@
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
{_iyBase :: ItemBaseType
,_iyModules :: M.Map ModuleSlot ItemModuleType
,_iyStack :: Stack
}
deriving (Eq,Ord,Show)
-- TODO make this an enum somehow...?
data ItemBaseType
= NOTDEFINED
| EFFGUN String
| AUTOEFFGUN String
-- Weapons
| BANGSTICK Int
| PISTOL
| REVOLVER
| REVOLVERX Int
| HVAUTOGUN
| LTAUTOGUN
| MACHINEPISTOL
| AUTOPISTOL
| SMG
| BANGCONE
| BLUNDERBUSS
| BIGBLUNDERBUSS
| BIGGERBLUNDERBUSS
| BIGGESTBLUNDERBUSS
| GRAPESHOTCANNON
| GRENADELAUNCHER Int -- number of chambers that can be reloaded
-- | MORTARCONE / HANDMORTAR
| BANGCANE
| MINIGUN
| MINIGUNX Int
| BANGCANEX Int
| RIFLE
| REPEATER
| AUTORIFLE
| BURSTRIFLE
| FASTBURSTRIFLE
| COMPLETEBURSTRIFLE
| BANGROD
| ELEPHANTGUN
| AMR
| AUTOAMR
| SNIPERRIFLE
| MACHINEGUN
| FLAMESPITTER
| FLAMETHROWER
| FLAMETORRENT
| FLAMEWALL
| BLOWTORCH
| AUTOGUN
| SPREADGUN
| MULTGUN
| LONGGUN
| SPARKGUN
| TESLAGUN
| LASGUN
| LASPULSE
| LASGUNDUAL
| LASGUNSWING
| LASGUNSWAY
| LASGUNWIDEPULSE
| LASGUNWIDE Int
| LASGUNFOCUS Int
| SONICGUN
| TRACTORGUN
| LAUNCHER
| LAUNCHERX Int
-- | TRACKINGLAUNCHER
| REMOTELAUNCHER
| POISONSPRAYER
| DRONELAUNCHER
| GRENADE
| REMOTEBOMB
-- Utility items
| BOOSTER
| REWINDER
| BLINKER
| BLINKERUNSAFE
| FORCEFIELDGUN
| SHRINKER
| SPAWNER
-- Equipment
| CLICKDETECTOR Detector
| AUTODETECTOR Detector
| MAGSHIELD
| FLAMESHIELD
| FRONTARMOUR
| WRISTARMOUR
| INVISIBILITYEQUIPMENT EquipSite
| BRAINHAT
| HEADLAMP
| HEADLAMP1
| POWERLEGS
| SPEEDLEGS
| JUMPLEGS
| FLATSHIELD
| JETPACK
-- Crafting
| PIPE
data Stack = NoStack | Stack IcAmount
deriving (Eq,Ord,Show)
data CraftType
= PIPE
| TUBE
| HARDWARE
| SPRING
@@ -151,12 +64,104 @@ data ItemBaseType
| TIMEMODULE
| SIZEMODULE
| GRAVITYMODULE
deriving (Eq,Ord,Show,Enum)
-- TODO make this an enum somehow...?
data ItemBaseType
= NOTDEFINED
| EFFGUN String
| AUTOEFFGUN String
-- Weapons
| BANGSTICK Int
| PISTOL
| REVOLVER
| REVOLVERX Int
| MACHINEPISTOL
| AUTOPISTOL
| SMG
| BANGCONE
| BLUNDERBUSS
| BIGBLUNDERBUSS
| BIGGERBLUNDERBUSS
| BIGGESTBLUNDERBUSS
-- | GRAPESHOTCANNON
-- | GRENADELAUNCHER Int -- number of chambers that can be reloaded
-- | MORTARCONE / HANDMORTAR
| BANGCANE
-- | MINIGUN
| MINIGUNX Int
| BANGCANEX Int
| RIFLE
| REPEATER
| AUTORIFLE
| BURSTRIFLE
| FASTBURSTRIFLE
| COMPLETEBURSTRIFLE
| BANGROD
| ELEPHANTGUN
| AMR
| AUTOAMR
| SNIPERRIFLE
| MACHINEGUN
| FLAMESPITTER
| FLAMETHROWER
| FLAMETORRENT
| FLAMEWALL
| BLOWTORCH
| AUTOGUN
-- | SPREADGUN
-- | MULTGUN
| LONGGUN
| SPARKGUN
| TESLAGUN
| LASGUN
| LASPULSE
| LASGUNDUAL
| LASGUNSWING
| LASGUNSWAY
| LASGUNWIDEPULSE
| LASGUNWIDE Int
| LASGUNFOCUS Int
| SONICGUN
| TRACTORGUN
| LAUNCHER
| LAUNCHERX Int
-- | TRACKINGLAUNCHER
| REMOTELAUNCHER
| POISONSPRAYER
| DRONELAUNCHER
-- | GRENADE
-- | REMOTEBOMB
-- Utility items
| BOOSTER
| REWINDER
| BLINKER
| BLINKERUNSAFE
| FORCEFIELDGUN
| SHRINKER
| SPAWNER
-- Equipment
| CLICKDETECTOR Detector
| AUTODETECTOR Detector
| MAGSHIELD
| FLAMESHIELD
| FRONTARMOUR
| WRISTARMOUR
| INVISIBILITYEQUIPMENT EquipSite
| BRAINHAT
| HEADLAMP
| HEADLAMP1
| POWERLEGS
| SPEEDLEGS
| JUMPLEGS
| FLATSHIELD
| JETPACK
--
| KEYCARD Int
--
| MEDKIT Int
| CRAFT CraftType
--
| NoCombineType
deriving (Eq,Ord,Show)
data ItemModuleType