{-# LANGUAGE LambdaCase #-} module Dodge.Item ( module Dodge.Item.Held, module Dodge.Item.Equipment, module Dodge.Item.Craftable, itemFromBase, ) where import Dodge.Data.Item import Dodge.Item.Ammo import Dodge.Item.Craftable import Dodge.Item.Equipment import Dodge.Item.Held import Dodge.Item.Scope itemFromBase :: ItemType -> Item itemFromBase = \case HELD ht -> itemFromHeldType ht -- LEFT lt -> itemFromLeftType lt EQUIP et -> itemFromEquipType et CRAFT cr -> makeTypeCraft cr ATTACH at -> itemFromAttachType at AMMOMAG t -> itemFromAmmoMag t TARGETING tt -> targetingScope tt BULLETMOD bm -> bulletModule bm STICKYMOD -> stickyMod ITEMSCAN -> itemScan INTROSCAN t -> introScan t MAPPER -> mapper 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 UNDERBARRELSLOT -> underBarrelSlot ZOOMSCOPE -> zoomScope BULLETSYNTH -> bulletSynthesizer REMOTESCREEN -> remoteScreen JOYSTICK -> joystick GIMBAL -> gimbal GYROSCOPE -> gyroscope REMOTEDETONATOR -> remoteDetonator SMOKEREDUCER -> smokeReducer -- ROCKETHOMER -> rocketHomer HOMINGMODULE -> homingModule AUGMENTEDHUD -> augmentedHUD SHELLPAYLOAD p -> shellModule p 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