136 lines
4.1 KiB
Haskell
136 lines
4.1 KiB
Haskell
module Dodge.Item
|
|
( module Dodge.Item.Weapon
|
|
, module Dodge.Item.Consumable
|
|
, module Dodge.Item.Equipment
|
|
, module Dodge.Item.PassKey
|
|
, module Dodge.Item.Craftable
|
|
, itemFromBase
|
|
, baseToFamily
|
|
) where
|
|
import Dodge.Data
|
|
import Dodge.Item.Weapon
|
|
import Dodge.Item.Equipment
|
|
import Dodge.Item.Consumable
|
|
import Dodge.Item.PassKey
|
|
import Dodge.Item.Family
|
|
import Dodge.Item.Craftable
|
|
|
|
-- this is not ideal, should fold the itemtype into a stackable/unstackable type
|
|
itemFromBase :: ItemBaseType -> Item
|
|
itemFromBase ibt = case ibt of
|
|
NOTDEFINED -> error "cannot create undefined item"
|
|
EFFGUN _ -> undefined
|
|
AUTOEFFGUN _ -> undefined
|
|
-- Weapons
|
|
HELD ht -> itemFromHeldType ht
|
|
LEFT lt -> itemFromLeftType lt
|
|
EQUIP et -> itemFromEquipType et
|
|
--GRENADE
|
|
--REMOTEBOMB
|
|
-- Utility items
|
|
CRAFT cr -> makeTypeCraft cr
|
|
KEYCARD i -> keyCard i
|
|
MEDKIT i -> medkit i
|
|
itemFromEquipType :: EquipItemType -> Item
|
|
itemFromEquipType et = case et of
|
|
MAGSHIELD -> magShield
|
|
FLAMESHIELD -> flameShield
|
|
FRONTARMOUR -> frontArmour
|
|
WRISTARMOUR -> wristArmour
|
|
INVISIBILITYEQUIPMENT GoesOnWrist -> wristInvisibility
|
|
INVISIBILITYEQUIPMENT _ -> error "need to define invisibility for more than wrist"
|
|
BRAINHAT -> brainHat
|
|
HAT -> hat
|
|
HEADLAMP -> headLamp
|
|
HEADLAMP1 -> headLamp1
|
|
POWERLEGS -> powerLegs
|
|
SPEEDLEGS -> speedLegs
|
|
JUMPLEGS -> jumpLegs
|
|
JETPACK -> jetPack
|
|
AUTODETECTOR d -> autoDetector d
|
|
itemFromLeftType :: LeftItemType -> Item
|
|
itemFromLeftType lt = case lt of
|
|
BOOSTER -> boosterGun
|
|
REWINDER -> rewindGun
|
|
BLINKER -> blinkGun
|
|
BLINKERUNSAFE -> unsafeBlinkGun
|
|
SHRINKER -> shrinkGun
|
|
SPAWNER -> error "need to datify creatures first"
|
|
-- Equipment
|
|
itemFromHeldType :: HeldItemType -> Item
|
|
itemFromHeldType ht = case ht of
|
|
TORCH -> torch
|
|
SHATTERGUN -> shatterGun
|
|
BANGSTICK i -> bangStick i
|
|
PISTOL -> pistol
|
|
REVOLVER -> revolver
|
|
REVOLVERX i -> revolverX i
|
|
MACHINEPISTOL -> machinePistol
|
|
AUTOPISTOL -> autoPistol
|
|
SMG -> smg
|
|
BANGCONE -> bangCone
|
|
BLUNDERBUSS -> blunderbuss
|
|
GRAPECANNON i -> grapeCannon i
|
|
--GRENADELAUNCHER Int -- number of chambers that can be reloaded
|
|
-- --| MORTARCONE / HANDMORTAR
|
|
MINIGUNX i -> miniGunX i
|
|
VOLLEYGUN i -> volleyGun i
|
|
RIFLE -> rifle
|
|
REPEATER -> repeater
|
|
AUTORIFLE -> autoRifle
|
|
BURSTRIFLE -> burstRifle
|
|
-- FASTBURSTRIFLE -> fastBurstRifle
|
|
-- COMPLETEBURSTRIFLE -> completeBurstRifle
|
|
BANGROD -> bangRod
|
|
ELEPHANTGUN -> elephantGun
|
|
AMR -> amr
|
|
AUTOAMR -> autoAmr
|
|
SNIPERRIFLE -> sniperRifle
|
|
MACHINEGUN -> machineGun
|
|
FLAMESPITTER -> flameSpitter
|
|
FLAMETHROWER -> flameThrower
|
|
FLAMETORRENT -> flameTorrent
|
|
FLAMEWALL -> flameWall
|
|
BLOWTORCH -> blowTorch
|
|
AUTOGUN -> autoGun
|
|
-- SPREADGUN -> spreadGun
|
|
-- MULTGUN -> multGun
|
|
SPARKGUN -> sparkGun
|
|
TESLAGUN -> teslaGun
|
|
LASGUN -> lasGun
|
|
LASCIRCLE -> lasCircle
|
|
--LASPULSE -> lasPulse
|
|
DUALBEAM -> dualBeam
|
|
--LASGUNSWING -> lasSwing
|
|
--LASGUNSWAY -> lasSway
|
|
-- LASGUNWIDEPULSE -> lasWidePulse
|
|
LASWIDE i -> lasWide i
|
|
--LASGUNFOCUS i -> lasFocus i
|
|
SONICGUN -> sonicGun
|
|
TRACTORGUN -> tractorGun
|
|
LAUNCHER -> launcher
|
|
LAUNCHERX i -> launcherX i
|
|
-- --| TRACKINGLAUNCHER
|
|
REMOTELAUNCHER -> remoteLauncher
|
|
POISONSPRAYER -> poisonSprayer
|
|
DRONELAUNCHER -> droneLauncher
|
|
FORCEFIELDGUN -> forceFieldGun
|
|
|
|
HELDDETECTOR d -> clickDetector d
|
|
|
|
FLATSHIELD -> flatShield
|
|
baseToFamily :: ItemBaseType -> ItemFamily
|
|
baseToFamily ibt = case ibt of
|
|
NOTDEFINED -> undefined
|
|
EFFGUN _ -> undefined
|
|
AUTOEFFGUN _ -> undefined
|
|
HELD _ -> HeldFamily
|
|
LEFT _ -> LeftClickFamily
|
|
EQUIP _ -> EquipmentFamily
|
|
CRAFT _ -> CraftingFamily
|
|
|
|
KEYCARD _ -> HeldFamily
|
|
|
|
MEDKIT _ -> ConsumableFamily
|
|
|