module Dodge.Item.Draw.SPic where itemSPic :: Item -> SPic itemSPic it = modulesSPic it <> case it ^. itType . iyBase of HELD ht -> heldItemSPic ht it _ -> mempty -- NOTDEFINED -> -- EFFGUN _ -> -- AUTOEFFGUN _ -> -- -- -- BOOSTER -- REWINDER -- BLINKER -- BLINKERUNSAFE -- FORCEFIELDGUN -- SHRINKER -- SPAWNER -- -- CLICKDETECTOR Detector -- AUTODETECTOR Detector -- MAGSHIELD -- FLAMESHIELD -- FRONTARMOUR -- WRISTARMOUR -- INVISIBILITYEQUIPMENT EquipSite -- BRAINHAT -- HEADLAMP -- HEADLAMP1 -- POWERLEGS -- SPEEDLEGS -- JUMPLEGS -- FLATSHIELD -- JETPACK -- -- KEYCARD Int -- -- MEDKIT Int -- CRAFT CraftType heldItemSPic ht it = case ht of BANGSTICK i -> noPic & baseStickShapeX i <> stickClip it -- PISTOL -> -- REVOLVER -> -- REVOLVERX i -> -- MACHINEPISTOL -> -- AUTOPISTOL -> -- SMG -> -- BANGCONE -> -- BLUNDERBUSS -> -- GRAPECANNON i -> -- MINIGUNX i -> -- VOLLEYGUN i -> -- RIFLE -> -- REPEATER -> -- AUTORIFLE -> -- BURSTRIFLE -> -- BANGROD -> -- ELEPHANTGUN -> -- AMR -> -- AUTOAMR -> -- SNIPERRIFLE -> -- MACHINEGUN -> -- FLAMESPITTER -> -- FLAMETHROWER -> -- FLAMETORRENT -> -- FLAMEWALL -> -- BLOWTORCH -> -- AUTOGUN -> -- SPARKGUN -> -- TESLAGUN -> -- LASGUN -> -- LASCIRCLE -> -- DUALBEAM -> -- LASWIDE i -> -- SONICGUN -> -- TRACTORGUN -> -- LAUNCHER -> -- LAUNCHERX i -> -- REMOTELAUNCHER -> -- POISONSPRAYER -> -- DRONELAUNCHER -> -- SHATTERGUN -> modulesSPic :: Item -> SPic modulesSPic it = mempty baseStickShapeX :: Int -> Shape baseStickShapeX i = foldMap f [0..i-1] where f j = rotateSH ang baseStickShape where ang = fromIntegral j * baseStickSpread - (fromIntegral i - 1) * baseStickSpread * 0.5 baseStickSpread :: Float baseStickSpread = 0.2 stickClip :: Item -> Shape stickClip it = case it ^? itConsumption . laLoaded of Just x | x > 0 -> foldMap f [0..x-1] _ -> mempty where f i = rotateSH ang $ translateSH (V3 5 0 3) $ upperPrismPoly 2 $ square 1.5 where ang = baseStickSpread * fromIntegral i - 0.5 * baseStickSpread * fromIntegral (_brlNum (_gunBarrels (_itParams it))-1)