{-# LANGUAGE LambdaCase #-} 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.Ammo import Dodge.Item.Consumable import Dodge.Item.Craftable import Dodge.Item.Equipment import Dodge.Item.Held import Dodge.Item.Scope import Dodge.Item.Weapon itemFromBase :: ItemType -> Item itemFromBase = \case 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 TARGETING tt -> targetingScope tt BULLETMOD bm -> bulletModule bm itemFromAmmoMag :: AmmoMagType -> Item itemFromAmmoMag at = case at of DRUMMAG -> drumMag TINMAG -> tinMag BELTMAG -> beltMag SHELLMAG -> shellMag BATTERY -> battery CHEMFUELPOUCH -> chemFuelPouch itemFromAttachType :: AttachType -> Item itemFromAttachType at = case at of ZOOMSCOPE -> zoomScope BULLETSYNTH -> bulletSynthesizer REMOTESCREEN -> remoteScreen -- ROCKETHOMER -> rocketHomer HOMINGMODULE -> homingModule AUGMENTEDHUD -> augmentedHUD 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 BATTERYPACK -> batteryPack FUELPACK -> fuelPack BULLETBELTPACK -> bulletBeltPack BULLETBELTBRACER -> bulletBeltBracer WRIST_ECG -> pulseChecker itemFromLeftType :: LeftItemType -> Item itemFromLeftType lt = case lt of BOOSTER -> boosterGun STOPWATCH -> stopWatch REWINDWATCH -> rewindWatch SCROLLWATCH -> scrollWatch BLINKER -> blinkGun BLINKERUNSAFE -> unsafeBlinkGun SPAWNER -> error "need to datify creatures first"