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 TARGETINGHAT tt -> targetingHat tt HEADLAMP -> headLamp POWERLEGS -> powerLegs SPEEDLEGS -> speedLegs JUMPLEGS -> jumpLegs JETPACK -> jetPack BATTERYPACK -> batteryPack FUELPACK -> fuelPack 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"