Files
loop/src/Dodge/Item.hs
T
2024-12-18 15:50:22 +00:00

85 lines
2.4 KiB
Haskell

{-# 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"