106 lines
2.5 KiB
Haskell
106 lines
2.5 KiB
Haskell
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)
|