module Dodge.Item ( module Dodge.Item.Weapon , module Dodge.Item.Consumable , module Dodge.Item.Equipment , module Dodge.Item.PassKey , module Dodge.Item.Craftable , itemFromBase , baseToFamily ) where import Dodge.Data import Dodge.Item.Weapon import Dodge.Item.Equipment import Dodge.Item.Consumable import Dodge.Item.PassKey import Dodge.Item.Family import Dodge.Item.Craftable -- this is not ideal, should fold the itemtype into a stackable/unstackable type itemFromBase :: ItemBaseType -> Item itemFromBase ibt = case ibt of NOTDEFINED -> error "cannot create undefined item" EFFGUN _ -> undefined AUTOEFFGUN _ -> undefined -- Weapons HELD ht -> itemFromHeldType ht LEFT lt -> itemFromLeftType lt EQUIP et -> itemFromEquipType et --GRENADE --REMOTEBOMB -- Utility items CRAFT cr -> makeTypeCraft cr KEYCARD i -> keyCard i MEDKIT i -> medkit i 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 HEADLAMP1 -> headLamp1 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" -- Equipment itemFromHeldType :: HeldItemType -> Item itemFromHeldType ht = case ht of TORCH -> torch SHATTERGUN -> shatterGun BANGSTICK i -> bangStick i PISTOL -> pistol REVOLVER -> revolver REVOLVERX i -> revolverX i MACHINEPISTOL -> machinePistol AUTOPISTOL -> autoPistol SMG -> smg BANGCONE -> bangCone BLUNDERBUSS -> blunderbuss GRAPECANNON i -> grapeCannon i --GRENADELAUNCHER Int -- number of chambers that can be reloaded -- --| MORTARCONE / HANDMORTAR MINIGUNX i -> miniGunX i VOLLEYGUN i -> volleyGun i RIFLE -> rifle REPEATER -> repeater AUTORIFLE -> autoRifle BURSTRIFLE -> burstRifle -- FASTBURSTRIFLE -> fastBurstRifle -- COMPLETEBURSTRIFLE -> completeBurstRifle BANGROD -> bangRod ELEPHANTGUN -> elephantGun AMR -> amr AUTOAMR -> autoAmr SNIPERRIFLE -> sniperRifle MACHINEGUN -> machineGun FLAMESPITTER -> flameSpitter FLAMETHROWER -> flameThrower FLAMETORRENT -> flameTorrent FLAMEWALL -> flameWall BLOWTORCH -> blowTorch AUTOGUN -> autoGun -- SPREADGUN -> spreadGun -- MULTGUN -> multGun SPARKGUN -> sparkGun TESLAGUN -> teslaGun LASGUN -> lasGun LASCIRCLE -> lasCircle --LASPULSE -> lasPulse DUALBEAM -> dualBeam --LASGUNSWING -> lasSwing --LASGUNSWAY -> lasSway -- LASGUNWIDEPULSE -> lasWidePulse LASWIDE i -> lasWide i --LASGUNFOCUS i -> lasFocus i SONICGUN -> sonicGun TRACTORGUN -> tractorGun LAUNCHER -> launcher LAUNCHERX i -> launcherX i -- --| TRACKINGLAUNCHER REMOTELAUNCHER -> remoteLauncher POISONSPRAYER -> poisonSprayer DRONELAUNCHER -> droneLauncher FORCEFIELDGUN -> forceFieldGun HELDDETECTOR d -> clickDetector d FLATSHIELD -> flatShield baseToFamily :: ItemBaseType -> ItemFamily baseToFamily ibt = case ibt of NOTDEFINED -> undefined EFFGUN _ -> undefined AUTOEFFGUN _ -> undefined HELD _ -> HeldFamily LEFT _ -> LeftClickFamily EQUIP _ -> EquipmentFamily CRAFT _ -> CraftingFamily KEYCARD _ -> HeldFamily MEDKIT _ -> ConsumableFamily