81 lines
2.2 KiB
Haskell
81 lines
2.2 KiB
Haskell
module Dodge.Item (
|
|
module Dodge.Item.Weapon,
|
|
module Dodge.Item.Held,
|
|
module Dodge.Item.Consumable,
|
|
module Dodge.Item.Equipment,
|
|
module Dodge.Item.Craftable,
|
|
itemFromBase,
|
|
) where
|
|
|
|
import Dodge.Item.Ammo
|
|
import Dodge.Data.Item
|
|
import Dodge.Item.Consumable
|
|
import Dodge.Item.Craftable
|
|
import Dodge.Item.Equipment
|
|
import Dodge.Item.Held
|
|
import Dodge.Item.Weapon
|
|
import Dodge.Item.Scope
|
|
|
|
itemFromBase :: ItemBaseType -> Item
|
|
itemFromBase ibt = case ibt of
|
|
HELD ht -> itemFromHeldType ht
|
|
LEFT lt -> itemFromLeftType lt
|
|
EQUIP et -> itemFromEquipType et
|
|
CONSUMABLE et -> itemFromConsumableType et
|
|
CRAFT cr -> makeTypeCraft cr
|
|
ATTACH at -> itemFromAttachType at
|
|
AMMOMAG t -> itemFromAmmoMag t
|
|
|
|
itemFromAmmoMag :: AmmoMagType -> Item
|
|
itemFromAmmoMag at = case at of
|
|
DRUMMAG -> drumMag
|
|
TINMAG -> tinMag
|
|
REVOLVEMAG -> revolveMag
|
|
BELTMAG -> beltMag
|
|
SHELLMAG -> shellMag
|
|
|
|
itemFromAttachType :: AttachType -> Item
|
|
itemFromAttachType at = case at of
|
|
SCROLLATTACH ZOOMSCOPE -> zoomScope
|
|
TARGETATTACH tt -> targetingScope tt
|
|
|
|
|
|
itemFromConsumableType :: ConsumableItemType -> Item
|
|
itemFromConsumableType ct = case ct of
|
|
MEDKIT i -> medkit i
|
|
EXPLOSIVES -> undefined
|
|
|
|
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
|
|
TARGETINGHAT tt -> targetingHat tt
|
|
HEADLAMP -> headLamp
|
|
POWERLEGS -> powerLegs
|
|
SPEEDLEGS -> speedLegs
|
|
JUMPLEGS -> jumpLegs
|
|
JETPACK -> jetPack
|
|
BATTERYPACK -> batteryPack
|
|
FUELPACK -> fuelPack
|
|
BULLETBELTPACK -> bulletBeltPack
|
|
BULLETBELTBRACER -> bulletBeltBracer
|
|
AUTODETECTOR d -> autoDetector d
|
|
|
|
itemFromLeftType :: LeftItemType -> Item
|
|
itemFromLeftType lt = case lt of
|
|
BOOSTER -> boosterGun
|
|
STOPWATCH -> stopWatch
|
|
REWINDWATCH -> rewindWatch
|
|
SCROLLWATCH -> scrollWatch
|
|
BLINKER -> blinkGun
|
|
BLINKERUNSAFE -> unsafeBlinkGun
|
|
SHRINKER -> shrinkGun
|
|
SPAWNER -> error "need to datify creatures first"
|
|
|