57 lines
1.6 KiB
Haskell
57 lines
1.6 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.Data.Item
|
|
import Dodge.Item.Consumable
|
|
import Dodge.Item.Craftable
|
|
import Dodge.Item.Equipment
|
|
import Dodge.Item.Held
|
|
import Dodge.Item.Weapon
|
|
|
|
itemFromBase :: ItemBaseType -> Item
|
|
itemFromBase ibt = case ibt of
|
|
NoItemType -> undefined
|
|
HELD ht -> itemFromHeldType ht
|
|
LEFT lt -> itemFromLeftType lt
|
|
EQUIP et -> itemFromEquipType et
|
|
Consumable et -> itemFromConsumableType et
|
|
CRAFT cr -> makeTypeCraft cr
|
|
|
|
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
|
|
HEADLAMP -> headLamp
|
|
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"
|
|
|