Move toward data-ifying item SPics
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user