{-# LANGUAGE LambdaCase #-} module Dodge.Item ( module Dodge.Item.Held, module Dodge.Item.Equipment, module Dodge.Item.Craftable, itemFromBase, ) where import Dodge.Data.Equipment.Misc 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 DETECTOR d -> detector d ARHUD -> arHUD DROPPER x -> dropper x CLICKER x -> clicker x COPIER x -> copier x NULGATE -> nulgate UNIGATE -> unigate BINGATE -> bingate LASER -> laser itemFromAmmoMag :: AmmoMagType -> Item itemFromAmmoMag at = case at of DRUMMAG -> drumMag TINMAG -> tinMag BELTMAG -> beltMag SHELLMAG -> shellMag BATTERY -> battery CHEMFUELPOUCH -> chemFuelPouch itemFromAttachType :: AttachType -> Item itemFromAttachType = \case UNDERBARRELSLOT -> underBarrelSlot ZOOMSCOPE -> zoomScope BULLETSYNTH -> bulletSynthesizer REMOTESCREEN -> remoteScreen JOYSTICK -> joystick GIMBAL -> gimbal GYROSCOPE -> gyroscope REMOTEDETONATOR -> remoteDetonator SMOKEREDUCER -> smokeReducer HOMINGMODULE -> homingModule SHELLPAYLOAD p -> shellModule p CAPACITOR -> capacitor itemFromEquipType :: EquipItemType -> Item itemFromEquipType et = case et of MAGSHIELD mt -> magShield mt 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